【发布时间】:2020-01-02 18:09:40
【问题描述】:
默认情况下,Websockets 是否具有处理丢失数据的机制?
这里过于简单化了,假设我从服务器 (node.js) 发送 3 个包到客户端 (vue js)。 2 号包裹丢失。
有没有办法重新发送它或至少通知客户一个错误?或者 WS 根本不支持这样的东西,因为它的流性质?
即使 WS 不支持,有没有 node 模块支持?
谢谢
【问题讨论】:
-
您能更具体地定义“丢失的数据”吗?
默认情况下,Websockets 是否具有处理丢失数据的机制?
这里过于简单化了,假设我从服务器 (node.js) 发送 3 个包到客户端 (vue js)。 2 号包裹丢失。
有没有办法重新发送它或至少通知客户一个错误?或者 WS 根本不支持这样的东西,因为它的流性质?
即使 WS 不支持,有没有 node 模块支持?
谢谢
【问题讨论】:
Websocket 本身作为协议不管理“丢失”的数据。它是一个全双工 TCP(不是 UDP,无法保证传送),所以通常您要么收到整个消息,要么什么也没有,不幸的是,您需要自己考虑什么情况。
好消息是node.js 有很多中间件可供您使用,即 IE socket.io,它们为您实现了大量业务逻辑,例如重新连接、乒乓球、ack/syn、long轮询等...
【讨论】: