使用 websocket.send 时如何知道消息何时到达?

SCL*_*Leo 3 javascript tcp websocket

根据TCP 是否在每个数据包上发送 SYN/ACK 还是仅在第一个连接上发送 SYN/ACK?,客户端应该能够知道消息何时到达。但是,send方法似乎无法接受回调。有没有办法知道消息何时到达?

jfr*_*d00 5

TCP ack 是 TCP 协议内部的。这不会回到 TCP 客户端级别或 webSocket 级别。因此,这些协议级确认对于使用 TCP 的应用程序是不可见的。

如果您想要对消息到达进行积极的应用程序级确认,那么您可以让收件人发回应用程序级确认消息。

如果您使用socket.io(它在webSocket之上运行),那么它有一个内置的确认/响应回调功能。您将回调传递给.emit()当收件人确认收到消息时将被调用的方法。如果需要,您甚至可以让收件人发回特定的回复。在内部,socket.io 只是发送另一条消息作为响应作为确认,当然,您可以使用普通的 webSocket 自己实现。