【问题标题】:Is there a way of making socket.io client version 3.0 make use of EIO=3 in javascript有没有办法让 socket.io 客户端版本 3.0 在 javascript 中使用 EIO=3
【发布时间】:2023-02-22 06:36:09
【问题描述】:
目标是连接到使用 Engine.IO 传输协议第 3 版的 socket.io 服务器EIO=3...由于不确定性,这种 2 个问题合二为一...第一个是 socket.io 客户端版本 3.0使用EIO=3 instead of using EIO=4 which is it's basic setting,第二个问题是我如何在不说明特定事件的情况下处理服务器发送的所有事件(这是因为我可能不知道事件的名称或期待它在所有...谢谢
【问题讨论】:
标签:
javascript
socket.io
engine.io
【解决方案1】:
在socket.io中,engine.io是socket.io的底层协议模块,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(使用中间件)使它成为可能.