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

时间:2013-03-14 13:11:57

标签: node.js socket.io server-push

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

2 个答案:

答案 0 :(得分:19)

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

使用Socket.io和WebSockets时,可以保证数据包顺序。

这是一篇旧帖子,但值得注意的是,Socket.io通过 WebSockets 实际上保证事件排序得以维持。这是因为TCP本身,它是WebSockets& Sons的底层技术。 HTTP保证保持数据包排序。但是,Socket.io还支持其他几种保证顺序的协议。

有关此问题的几个问题,支持这一事实:

答案 1 :(得分:0)

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