sca*_*les 4 long-polling node.js socket.io
我有一个客户端/服务器应用程序使用服务器上的nodejs和socket.io作为连接机制.由于与我的应用程序相关的原因,我希望每个浏览器只有一个活动连接,并拒绝来自其他选项卡的所有连接,这些连接可能会在会话期间稍后打开.这个伟大的工程使用WebSockets,但是如果的WebSockets不是由浏览器和XHR轮询支持来代替,断开不会发生,因此,如果用户只需刷新页面,这不被解释为再连接(我有一个延迟重新连接和会话恢复),但作为一个新选项卡,在连接中结束被拒绝,因为此相同选项卡生成的旧连接仍处于活动状态.
我正在寻找一种方法,以便在发生刷新时从客户端有效地结束连接.我已经尝试绑定到客户端beforeunload并调用socket.disconnect()它,并且还发送了一条消息,socket.emit('force-disconnect')并且触发了与服务器的断开连接,但没有成功.我在这里错过了什么吗?感谢您的帮助!
我已经阅读了这个问题,并且发现它对我的特定情况没有用.
sca*_*les 10
解决了这个问题,结果证明这是一个引入的bugsocket.io 0.9.5.如果您遇到此问题,只需将服务器和客户端代码更新为socket.io > 0.9.9并将socket.io客户端选项设置sync disconnect on unload为,true并且您已完成设置.
选项以这种方式设置:
var socket = io.connect('http://yourdomain.com', {'sync disconnect on unload' : true});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5468 次 |
| 最近记录: |