【发布时间】:2012-08-16 03:37:42
【问题描述】:
我有一个客户端/服务器应用程序,在服务器上使用 nodejs 和 socket.io 作为连接机制。出于与我的应用程序相关的原因,我希望每个浏览器只有一个活动连接,并拒绝来自其他选项卡的所有连接,这些连接可能稍后在会话期间打开。这对 WebSockets 很有效,但是如果浏览器不支持 WebSockets 而使用 XHR 轮询,则永远不会发生断开连接,因此如果用户只是刷新页面,这不会被解释为重新连接(我有延迟重新连接和会话恢复),但作为一个新选项卡,它以连接被拒绝而结束,因为同一选项卡建立的旧连接仍然处于活动状态。
我正在寻找一种在发生刷新时有效地结束来自客户端的连接的方法。我尝试绑定到beforeunload 并在客户端调用socket.disconnect(),并发送类似socket.emit('force-disconnect') 的消息并触发与服务器的断开连接,但没有成功。我在这里错过了什么吗?感谢你的帮助!
我已经阅读了this question 并没有发现它对我的特殊情况有用。
【问题讨论】:
标签: node.js socket.io long-polling