Reputation: 813
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
Upvotes: 11
Views: 26287
Reputation: 19
I install old version by
npx [email protected]
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
Upvotes: 0
Reputation: 1102
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 [email protected])
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
});
Upvotes: 38