node.js - Socket.io v3 不支持的协议版本错误
问题描述
我坚持使用较新版本的 socket.io。一切都很好,但是当我想升级到 socket.io 3 时,一切都坏了,目前在客户端上,我得到一个 400 HTTP 状态代码,并带有以下 JSON 响应 -
{"code":5,"message":"Unsupported protocol version"}
服务器端配置 -
const io = require("socket.io")(server, {
cors: {
origin: config.clientURL,
methods: ["GET", "POST"],
credentials: true,
},
});
客户端配置 -
const socket = io(backendURL, {
withCredentials: true,
});
我已经尝试了很多事情并重新部署了很多次,但错误并没有消失。
作为参考,我有这些 github repos -
客户端在react.js
- GitHub 存储库
服务器在nodeJs
和socket.io.js
- GitHub repo
解决方案
看起来您的 socket.io-client 和 socket.io 服务器的版本之间可能存在不匹配。
首先,更新服务器,将 allowEIO3 设置为 true(在 socket.io@3.1.0 中添加)
const io = require("socket.io")({
allowEIO3: true // false by default
});
升级 socket.io-client(现在最新的是 3.1.1)后,您可以将其设置回来,或将其删除,因为默认值为 false
const io = require("socket.io")({
allowEIO3: false
});
推荐阅读
- ada - 以 V 形 (ADA) 绘制带有斜十字的旗帜
- eslint - 嵌套目录的 ESlint 覆盖规则
- android-source - 如何在 selinux 许可模式下运行 Cuttlefish 虚拟 Android 设备?
- java - 单元测试 Spring REST API 服务(更新(PUT 方法))
- mysql - 如何编写 MySQL 查询以在我的用户数据集中查找唯一的人?
- r - 根据条件对数据框进行重复观察
- javascript - 从另一个文件 javascript 中的函数导入 const
- python - 如何在没有 kv 语言的 Kivy 中添加背景图片
- reactjs - ReactJs 错误:npm start 不工作,我还绑定了“npm cache clean --force”。我被困在我的项目中间
- python - 回归树表现不佳