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

标签 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”。

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

最佳答案

成功了。

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 重连前后不同。

关于javascript - 如何在 Socket.IO 中重新连接后监听升级事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51345837/

相关文章:

javascript - 创建 cookie onunload(即使删除浏览器缓存后)

node.js - Socket.IO - 如何获取不同端点/房间的不同事件用户列表?

node.js - WebSocket 已经处于 CLOSING 或 CLOSED 状态 Socket io

javascript - 这两种声明 JS 属性的方式之间的区别

Javascript 书签、href 中断?

php - 这些读数对于大约 500 CCU 的应用来说合适吗?

python - 在 Flask 中使用 socketio.on() 渲染一个新模板

java - 使用基于 Java 的 netty 套接字 io 客户端向所有浏览器发送消息

给出答案后,Javascript 计算器不会清除

javascript - 在IE中,脚本不会更改div的innerhtml