我试图阻止客户端与服务器断开连接.因此,在用户关闭应用程序打开的窗口之前,我会:
$(window).bind("beforeunload", function() {
return("Close the app?");
});
Run Code Online (Sandbox Code Playgroud)
但问题是,无论用户选择离开还是停留在应用程序打开的页面上,客户端都会从服务器断开连接(停止监听),甚至在我选择选项之前.因此,如果用户选择留在页面上,则不会从服务器发送或接收任何内容.
为什么会这样?如何防止这种情况?
我的项目中遇到了完全相同的问题.
当您调用时socket.connect(),您应该将sync disconnect on unload连接的参数设置为false(true默认情况下):
var conn_options = {
'sync disconnect on unload':false
};
socket = io.connect(url, conn_options);
Run Code Online (Sandbox Code Playgroud)
您可以在此处找到更多连接选项:https://github.com/LearnBoost/socket.io/wiki/Configuring-Socket.IO
PS希望它仍然适合你:)
UPD.
由于文档已更改,false现在是默认值sync disconnect on unload
| 归档时间: |
|
| 查看次数: |
6435 次 |
| 最近记录: |