15

我的应用程序的客户端部分需要以严格的顺序处理 WebSocket 消息。不幸的是,每条消息的处理时间都很长(大约 3 秒),因此在第一条消息结束之前会出现另一条消息。几条消息后,顺序完全不同。如何在 JavaScript 中解决这个问题。

我想过一个任务队列,但我不知道如何实现它以不阻止我的网络应用程序的 GUI。

4

2 回答 2

28

我认为另一个答案是错误的。WebSocket IS TCP,这意味着传送的顺序是有保证的。正如@Maël Nison 所引用的,请参阅RFC6455

消息片段必须按照发送者发送的顺序传递给接收者

因此,您可以认为您的处理将按顺序开始。但是,如果您有很多异步回调,那么稍后的处理可能会在之前的处理仍在继续之前完成。但这只是错误的实现(还有一点回调地狱)。

类似帖子:

于 2015-08-08T14:30:16.983 回答
-5

目前,浏览器中的 WebSocket API 不公开基于选项/API。所以没有真正的选择来完成这个本机

这意味着您需要在从服务器发送到客户端的数据包中创建自己的逻辑/结构。这应该是一项相对容易的任务,我可以考虑传输可能在顶层具有索引属性的简单JSON 字符串/对象。

{
    packetIndex: 0,
    data: { }
}

并且您的客户端脚本将需要查看每个到达的数据包并正确排序(跟踪到达的数据包并在到达索引过高的数据包时“保持+等待”)

于 2013-01-11T21:57:28.293 回答