在Socket.IO中重新连接后如何监听升级事件

时间:2018-07-15 06:22:42

标签: javascript socket.io

我使用Socket.IO。 我的客户端代码在这里。

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

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

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

然后

  1. 启动服务器
  2. 打开页面
  3. 重新启动服务器

控制台显示

upgraded
disconnected
reconnected

“重新连接”之后没有“升级”。

我认为socket.io确实会在重新连接后再次升级,因为在websocket请求之前有xhr请求。 此外,socket.io.engine.transport.query.transport在发生重新连接事件时显示“正在轮询”,并在几秒钟后变为“ websocket”。

我可以检测到第二次升级吗?

1 个答案:

答案 0 :(得分:1)

有效。

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在重新连接前后有所不同。