javascript - 有没有办法让 socket.io 客户端版本 3.0 在 javascript 中使用 EIO=3

标签 javascript socket.io engine.io

目标是连接到使用 Engine.IO 传输协议(protocol)版本 3 EIO=3 的 socket.io 服务器...由于不确定性,这种 2 个问题合二为一...第一个问题是 socket.io 客户端版本 3.0 可以使用 EIO=3 而不是使用 EIO=4 这是它的基本设置,第二个问题是我如何处理发送的所有事件服务器而不说明特定事件(这样做的原因是因为我可能不知道事件的名称或根本不期待它)..谢谢

最佳答案

在socket.io中,engine.io是socket.io的底层协议(protocol)模块,URL中的EIO参数字面上是“engine.io”的缩写”。

版本 3 engine.io 客户端仅与版本 3 engine.io 服务器通信,并且是 EIO=3 或 EIO=4 与 engine.io 版本进行通信。因此,我认为 3.0 版客户端无法与 4.0 版服务器通信。他们就是这么做的。因此,如果您有 4.0 服务器,则需要 4.0 客户端。

您的服务器可能同时运行 3.0 和 4.0 服务器,并通过某种检测 EIO=x 值的中间件以某种方式将传入的客户端请求定向到正确的服务器。我自己没有尝试过,也没有见过它完成,但使用正确的代码应该是可行的。

至于监听所有事件而不命名它们,有一个socket.io FAQ here这表明socket.io没有内置该功能,但有第三方plug-in (使用中间件)使之成为可能。

仅供引用,这个article讨论 engine.io v4 中所做的重大更改。

还有,这里有一些 prior discussion关于如何在服务器上运行多个版本的 socket.io。


  • Socket.io 0.9 及以下版本使用engine.io v2
  • Socket.io 版本 1.x 和 2.x 使用 engine.io v3
  • Socket.io 版本 3.x 和 4.x 使用 engine.io v4

因为从 socket.io 3.x 到 4.x,engine.io 主要版本没有改变,所以 4.x 服务器可以接受来自 3.x 或 4.x socket.io 客户端的连接,并使用一个兼容性选项,4.x 服务器甚至可以接受来自 v2 socket.io 客户端的连接。请参阅https://socket.io/blog/socket-io-4-release/了解详情。

关于javascript - 有没有办法让 socket.io 客户端版本 3.0 在 javascript 中使用 EIO=3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75522736/

相关文章:

javascript - 使用 AngularJs 仅允许文本框中的字符

javascript - React Native 动画 useEffect 钩子(Hook)与依赖项数组创建无限循环

swift - 如何使用 Socket.io 解开传递给 swift 的数组?

socket.io - 如何访问未处理的消息?

node.js - 需要 Engine.IO 教程

javascript - 加载带有 .woff 扩展名的字体时出现意外标记非法

javascript - react +助焊剂 : Notify View/Component that action has failed?

node.js 和 socket.io 与 facebook 好友聊天

javascript - socket.io.js文件在哪里?

javascript - Node.js + Socket.io |在服务器上设置自定义 header