如何知道websocket发送的消息是否成功

ter*_*ter 13 websocket cowboy

我在牛仔中使用websocket开发了一个聊天服务器,但是我想知道服务器发送的消息是否成功.我怎么知道?

rkh*_*rov 21

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

在聊天协议中添加特殊的"确认接收"消息类型.在所有传出消息中包含单调递增的序列号,并在ACK消息中包含接收消息的SN,以准确了解客户端已处理的数据量.