主要观点:有客户端和服务器两个设备以特殊方式连接,服务器需在客户端请求时发送消息,有两个通道,一个带宽无限可靠但消息昂贵,另一个免费但只能发送单有效载荷位且消息有 50%几率丢失,任务是在其上构建层让服务器能向客户端发送消息。
关键信息:
- 客户端发送 1 位令牌,服务器收到令牌且有新消息时用令牌取反响应,客户端总是发送最后收到的令牌,收到不同令牌时从旁道获取消息。
- 系统启动时设备初始化状态,客户端设
client_token
为假,服务器消息队列为空,server_token
和new_messages
为假。 - 客户端定期沿不可靠通道发送
client_token
值,服务器收到执行相关操作,生成新消息时也执行相应操作,客户端收到服务器令牌时执行获取消息等操作。
重要细节: - 此假设与 TCP+TLS 和 UDP 在移动及嵌入式设备中的行为不太远。
- 原用 1 位时服务器无法区分客户端发送的前一令牌和下一令牌,改为 2 位无符号整数及用环绕递增替换取反后协议可按预期工作。
- 应给可靠通道添加定时要求,否则长轮询是更简单有效的解决方案。
标签:#networking、#programming
可通过 RSS feed 或在 Mastodon/ActivityPub 实例上搜索@[email protected]关注博客。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。