gpt4 book ai didi

node.js - socket.io 通过 XHR 轮询强制断开连接

转载 作者:搜寻专家 更新时间:2023-10-31 22:58:42 24 4
gpt4 key购买 nike

我有一个客户端/服务器应用程序,在服务器上使用 nodejs 并使用 socket.io 作为连接机制。出于与我的应用程序相关的原因,我希望每个浏览器只有一个事件连接,并拒绝来自其他选项卡的所有连接,这些连接可能会在 session 期间稍后打开。这对 WebSockets 很有效,但是如果浏览器不支持 WebSockets 而是使用 XHR 轮询,断开连接永远不会发生,所以如果用户只是刷新页面,这不会被解释为重新连接(我有一个延迟重新连接和 session 恢复),但作为一个新选项卡,它以连接被拒绝而结束,因为由同一选项卡建立的旧连接仍然处于事件状态。

我正在寻找一种方法来在刷新发生时有效地终止来自客户端的连接。我尝试绑定(bind)到 beforeunload 并在客户端调用 socket.disconnect() ,并发送一条消息,如 socket.emit('force- disconnect') 并触发与服务器的断开连接但没有成功。我在这里错过了什么吗?感谢你的帮助!

我读过 this question并且找不到它对我的特殊情况有用。

最佳答案

问题解决了,原来是bugsocket.io 0.9.5 中引入。如果您遇到此问题,只需将您的服务器和客户端代码都更新为 socket.io > 0.9.9 并设置 socket.io 客户端选项 sync disconnect on unloadtrue,一切就绪。

选项是这样设置的:

var socket = io.connect('http://yourdomain.com', {'sync disconnect on unload' : true});

关于node.js - socket.io 通过 XHR 轮询强制断开连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12043893/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com