2013-08-17 230 views

回答

8

Websocket是传统TCP套接字上的一个相当薄的抽象层。初次握手后,差异很小。所以,问题是:我怎么知道远程节点是否接收到数据块?简短的回答:只有当对方通过应用程序级协议明确确认。远程客户端将为您发送的每个数据包发送TCP ACK数据包,但由于充分的原因,该应用程序对应用程序隐藏得很好。接收ACK数据包只意味着远程TCP堆栈已经处理了它,但没有说明客户端应用程序如何(以及如果)处理它。

为您的聊天协议添加一个特殊的“确认接收”消息类型。在所有外发消息中包含一个单调递增的序列号,并在ACK消息中包含接收消息的序列号,以确切了解客户端已处理了多少数据。

相关问题