I'm stuck with the newer version of socket.io. Everything was fine but when I wanted to upgrade to socket.io 3, everything just broke, and currently on the client, I'm getting a 400 HTTP status code with the following JSON response -
{"code":5,"message":"Unsupported protocol version"}
Server-side config -
const io = require("socket.io")(server, {
cors: {
origin: config.clientURL,
methods: ["GET", "POST"],
credentials: true,
},
});
Client-side config -
const socket = io(backendURL, {
withCredentials: true,
});
I've tried very many things and redeployed many times but the error didn't go away.
For reference, I've these github repos -
Client in react.js - GitHub repo
Server in nodeJs and socket.io.js - GitHub repo
Looks like there may be a mismatch between versions of your socket.io-client and socket.io server.
First, update the servers with allowEIO3 set to true (added in socket.io@3.1.0)
const io = require("socket.io")({
allowEIO3: true // false by default
});
After you've upgraded the socket.io-client (latest right now is 3.1.1), you can set it back, or remove it since default is false
const io = require("socket.io")({
allowEIO3: false
});
I install old version by
npx create-nuxt-app@2.15.0
It will install nuxt with express.js in one project. Then update npm packages by commands:
npx npm-check-updates -u
npm i
And socket.io goes well between nuxt and socket.io on server