23

I developed a chat server using websocket in cowboy, but I want to know if the message sent by server to client success.How can I know?

4

1 回答 1

34

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

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

于 2013-08-22T08:02:59.453 回答