Socket.io是否保证在客户端收到广播事件?

pat*_*ana 11 server-push node.js socket.io

在Socket.io中是否有某种订购机制可以保证客户按顺序接收事件.例如:如果服务器向客户端A发出事件Evt1,则服务器将Evt2广播到所有客户端.thud客户端A接收Evt1然后接收Evt2并且只接受该顺序.我有点懒,读代码,在网上找不到我的答案.我的猜测是否定的,如果是这样的话你会如何实现它或者是否存在现有的解决方案?

Jer*_*ock 26

由于以前的答案可能会产生误导,我认为澄清一件事很重要:

将Socket.io与WebSockets一起使用时,保证可以保持数据包顺序.

这是一篇旧帖子,但值得注意的是,Socket.io over WebSockets 实际上确保事件排序得以保持.这是因为TCP本身是WebSockets和HTTP的基础技术,可以保证数据包排序.但是,Socket.io还支持其他几种保证顺序的协议.

关于这个问题有几个已发布的问题,支持这个事实:

  • 谢谢。这应该是公认的答案。 (2认同)

Max*_*Max -2

不,如果需要的话,您必须在应用程序级别执行此操作。互联网不保证两个不同的数据包将采用相同的路线,因此时间可能会有所不同。也许可以为每条消息添加一个时间戳,这样您就可以按该时间戳进行排序以保持秩序。

  • 我不确定,但我认为你错了。socket io 依赖于 websockets,而 websockets 依赖于 tcp,保证数据包将按照发送的 samr 顺序接收。 (5认同)