我在牛仔中使用websocket开发了一个聊天服务器,但我想知道服务器向客户端发送的消息是否成功。我怎么知道?
Websocket是传统TCP套接字之上的一个相当薄的抽象层。在初次握手之后,差异是最小的。所以,问题是:我如何知道远程对等方是否接收到了数据块?简短的回答是:只有对等方通过应用程序级协议明确承认它。远程客户端将为您发送的每个数据包发送TCP ACK数据包,但出于充分的原因,这一事实对应用程序来说是隐藏的。接收ACK数据包只意味着远程TCP堆栈已经处理了它,但没有说明客户端应用程序是如何(以及是否)处理它的
在您的聊天协议中添加一种特殊的"确认接收"消息类型。在所有传出消息中包含单调递增的序列号,并在ACK消息中包含接收消息的SN,以准确了解客户端已经处理了多少数据。