Skip to main content

Socket.IO 3.1.0

· 2 min read
Damien Arrachequesne

Hello everyone!

We just published a new version of Socket.IO: 3.1.0

In order to ease the migration to Socket.IO v3, the v3 server is now able to communicate with v2 clients:

const io = require("")({
allowEIO3: true // false by default

This should make the migration easier for existing deployments:

  • first, update the servers with allowEIO3 set to true
const io = require("")({
allowEIO3: true // false by default

Note: If you are using the Redis adapter to broadcast packets between nodes, you must use with and with Please note that both versions are compatible, so you can update each server one by one (no big bang is needed).

  • then, update the clients

This step may actually take some time, as some clients may still have a v2 client in cache.

You can check the version of the connection with:

io.on("connection", (socket) => {
const version = socket.conn.protocol; // either 3 or 4

This matches the value of the EIO query parameter in the HTTP requests.

  • and finally, once every client was updated, set allowEIO3 to false (which is the default value)
const io = require("")({
allowEIO3: false

With allowEIO3 set to false, v2 clients will now receive an HTTP 400 error (Unsupported protocol version) when connecting.

The migration guide was updated accordingly.


Bug Fixes