按接收顺序处理 WebSockets 消息

2024-01-09

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

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


我认为另一个答案是错误的。 WebSocket 是 TCP,这意味着交货顺序有保证。正如@Maël Nison 引用的那样,请参阅RFC6455 https://www.rfc-editor.org/rfc/rfc6455:

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

所以你可以理所当然地认为你的处理会start为了。但是,如果您有很多异步回调,那么稍后的处理可能会finish之前的早些时候还在继续。但这只是错误的实现(以及一些回调地狱)。

类似的帖子:

  • Websocket 消息是否会无序到达? https://stackoverflow.com/questions/11804721/can-websocket-messages-arrive-out-of-order
  • Websocket:服务器数据是否同步发送? https://stackoverflow.com/questions/9282892/websocket-are-server-data-sent-synchronously
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

按接收顺序处理 WebSockets 消息 的相关文章

随机推荐

  • 如何在显示 UIMenu 之前修改它以支持动态操作

    iOS 14 添加了点击或长按 UIBarButtonItem 或 UIButton 时显示菜单的功能 如下所示 let menu UIMenu children UIAction title Action image nil action
  • T-SQL 将不同行中最大长度列的行分组(?)

    我正在尝试想出一种方法 根据基于行键的任何行中最长的字符串来组合表中的行 example CREATE TABLE test1 akey int not null text1 varchar 50 NULL text2 varchar 50
  • 使用 openshift rhc tail 命令

    如何跟踪 openshift 日志文件 我发出了以下命令 rhc tail myapp 它似乎显示第一个错误行 然后停止 但不退出 如果我按 ctrl C 它会询问是否停止批处理 如何显示最后几个错误并可以逐页浏览 有向下翻页 向上翻页快捷
  • selenium 将两个 xpath 测试合二为一

    我尝试结合检查两种情况 如果启动检查失败 我们会看到重试按钮 el WebDriverWait self driver 10 until EC element to be clickable By NAME Try again 或者启动检查
  • DELETE_ON_CLOSE 在 Linux 上关闭之前删除文件

    我使用 Java 7 nio API 有以下代码 import java io IOException import java io ObjectOutputStream import java io OutputStream import
  • Google App Engine 批量加载器转换的参考页面在哪里?

    从空数据存储中 我能够自动生成bulkloader yaml文件 它只包含python preamble 但是transformers部分是空的 python preamble import google appengine ext bul
  • 将数字向下舍入

    I have numeric就像这个 a lt 1 542045 我想将它们四舍五入 或四舍五入abs 到小数点后 2 位 signif a 3 会将其向下舍入并给出 1 54 作为结果 但对于本示例 我想要的结果是 1 55 任何想法 我
  • 钥匙串+临时分发

    首先 一些细节 我们正在开发一个 iOS 应用程序 目前使用 Swift Xcode 6 1 GM 2 进行开发 在临时分发应用程序时 我们在钥匙串访问方面遇到了一些令人困惑的问题 并且在追踪原因方面遇到了问题 所有配置文件都与我们应用程序
  • 无法打印字符串数组元素[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 每当我尝试运行该程序时 它都会返回一条错误消息 没有运算符 另请注意 该程序仅在getChoice 功能 include
  • 没有估计器的plot_confusion_matrix

    我正在尝试使用plot confusion matrix from sklearn metrics import confusion matrix y true 1 1 0 1 y pred 1 1 0 0 confusion matrix
  • 无需重新编译即可更改 CORBA 接口

    我想向现有服务器的 CORBA 接口添加一个方法 这需要重新编译所有客户端吗 我用的是TAO 不需要重新编译客户端 也不应该这样做 无论您使用什么 ORB 正如 Adam 所指出的 查找是通过操作名称完成的 直接文本比较 我已经使用我们基于
  • 为什么控制器内部存在的这个函数和属性没有被访问?

    app2 js function var app angular module panel app controller PanelController function this tab 1 this setTab function se
  • Python Flask SocketIO 在 @socketio 上下文之外广播

    我试图在外部值发生变化时发送广播 当值更改时 Camonitor 会调用回调 我想通知所有连接的客户端值已更改并且需要刷新 from flask import Flask from epics import caget caput camo
  • 通过 WSO2 API 管理器公开不安全的 url

    我有一个在 WSO2 的 API Manager Publisher 工具中设置的 API 当使用访问令牌正确调用时 所有调用都可以正常工作 但我有一个网址 我希望任何人都可以调用它 这是一个定制的 Swagger UI 页面 与 WSO2
  • Flot - 是否可以有第三个 y 轴或隐藏数据集?

    我有一个图表显示一个人的比赛时间 如果您将下面的代码复制 粘贴到任何一个flot示例中 它应该可以工作 我在 y1 轴上显示时间 在 y2 轴上显示每公里配速 因为它们都是 H M S 的时间 但我还想在图表中显示每场比赛的距离 由于此数据
  • asp.net MVC 和 RESTful 路由,rails 风格。是否可以?

    有什么方法可以让 MVC 中的路由工作真正平静 就像 Rails 的人所做的那样 我说的是嵌套网址 比如 bands metallica albums killemall track 4 我发现唯一有用的库是 Steve Hodgkiss
  • 在 .NET 5 项目的输出目录中创建了多余的“运行时”文件夹

    我刚刚将 WPF NET 4 6 项目迁移到 NET 5 我注意到它现在在输出目录中创建一个名为 runtimes 的文件夹 其中包含许多依赖于平台的 dll 由于此应用程序只能在 Windows 计算机上运行 因此是否可以阻止在 Visu
  • 在 iOS8 中使用 [UIView(Geometry) _applyISEngineLayoutValues] 重新进入视图时出现问题,但在 iOS7 中则不然

    我正在开发一个由其他人启动的应用程序 我相信是在 iOS 5 发布时启动的 大多数 UI 都是代码生成的 不会显式使用自动布局和约束 但是 有一些 后来添加的 自包含 UI 元素 在 nib xib 中定义 内部使用自动布局 这些元素包含在
  • 检查特定 gcc 编译器的 glibc 版本

    我的系统上安装了两个 gcc 编译器 一个是gcc 4 1 2 默认 另一个是gcc 4 4 4 如何查看使用的 libc 版本gcc 4 4 4 因为 lib libc so 6显示使用的 glibcgcc 4 1 2 因为它是默认编译器
  • 按接收顺序处理 WebSockets 消息

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