Piyush
Piyush

Reputation: 813

Socket.io v3 Unsupported protocol version error

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

Answers (2)

Wiki HSK
Wiki HSK

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

Zeehad
Zeehad

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

Related Questions