通过 1 位易出错连接进行可靠通知的协议。

主要观点:有客户端和服务器两个设备以特殊方式连接,服务器需在客户端请求时发送消息,有两个通道,一个带宽无限可靠但消息昂贵,另一个免费但只能发送单有效载荷位且消息有 50%几率丢失,任务是在其上构建层让服务器能向客户端发送消息。
关键信息:

  • 客户端发送 1 位令牌,服务器收到令牌且有新消息时用令牌取反响应,客户端总是发送最后收到的令牌,收到不同令牌时从旁道获取消息。
  • 系统启动时设备初始化状态,客户端设client_token为假,服务器消息队列为空,server_tokennew_messages为假。
  • 客户端定期沿不可靠通道发送client_token值,服务器收到执行相关操作,生成新消息时也执行相应操作,客户端收到服务器令牌时执行获取消息等操作。
    重要细节:
  • 此假设与 TCP+TLS 和 UDP 在移动及嵌入式设备中的行为不太远。
  • 原用 1 位时服务器无法区分客户端发送的前一令牌和下一令牌,改为 2 位无符号整数及用环绕递增替换取反后协议可按预期工作。
  • 应给可靠通道添加定时要求,否则长轮询是更简单有效的解决方案。
    标签:#networking#programming
    可通过 RSS feed 或在 Mastodon/ActivityPub 实例上搜索@[email protected]关注博客。
阅读 10
0 条评论