【发布时间】:2013-08-19 16:21:00
【问题描述】:
我在cowboy中使用websocket开发了一个聊天服务器,但是我想知道服务器发送给客户端的消息是否成功。我怎么知道?
【问题讨论】:
-
你应该回来为你的问题选择一个答案
我在cowboy中使用websocket开发了一个聊天服务器,但是我想知道服务器发送给客户端的消息是否成功。我怎么知道?
【问题讨论】:
Websocket 是传统 TCP 套接字之上的一个相当薄的抽象层。初次握手后,差异很小。所以,问题是:我如何知道远程对等方是否收到了数据块?简短的回答:只有当对等方通过应用程序级协议明确地确认它时。远程客户端将为您发送的每个数据包发送 TCP ACK 数据包,但是出于充分的理由,这个事实对应用程序来说是隐藏的。收到 ACK 数据包仅意味着远程 TCP 堆栈已经处理了它,但没有说明客户端应用程序如何(以及是否)处理它。
在您的聊天协议中添加一个特殊的“确认接收”消息类型。在所有传出消息中包含一个单调递增的序列号,并在 ACK 消息中包含收到消息的 SN,以准确了解客户端已经处理了多少数据。
【讨论】: