blz
blz

Reputation: 937

How to listen upgrade event after reconnect in Socket.IO

I use Socket.IO. My client side code is here.

socket.io.engine.on("upgrade", () => {
    console.log("upgraded")
})

socket.on("reconnect", () => {
    console.log("reconnected")
})

socket.on("disconnect", () => {
    console.log("disconnected")
})

And,

  1. start the server
  2. open the page
  3. restart the server

console shows

upgraded
disconnected
reconnected

There is no 'upgraded' after 'reconnected'.

I think that socket.io do upgrade again after reconnect because there are xhr requests before a websocket request. Also, socket.io.engine.transport.query.transport shows 'polling' when reconnect event is occurred, and it becomes 'websocket' in few seconds later.

Can I detect second upgrade?

Upvotes: 1

Views: 859

Answers (1)

blz
blz

Reputation: 937

It worked.

const onUpgrade = () => {
    console.log("upgrade")
}

socket.io.engine.on("upgrade", onUpgrade)

socket.on("reconnect", () => {
    console.log("reconnected")
    socket.io.engine.on("upgrade", onUpgrade)
})

socket.on("disconnect", () => {
    console.log("disconnected")
})

socket.io.engine differs before and after reconnection.

Upvotes: 1

Related Questions