首页 > 解决方案 > 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 存储库

服务器在nodeJssocket.io.js- GitHub repo

标签: node.jswebsocketsocket.io

解决方案


看起来您的 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
});


推荐阅读