关闭窗口前Socket.IO断开问题

Ale*_*nzo 5 socket.io

我试图阻止客户端与服务器断开连接.因此,在用户关闭应用程序打开的窗口之前,我会:

    $(window).bind("beforeunload", function() { 
       return("Close the app?");
    });
Run Code Online (Sandbox Code Playgroud)

但问题是,无论用户选择离开还是停留在应用程序打开的页面上,客户端都会从服务器断开连接(停止监听),甚至在我选择选项之前.因此,如果用户选择留在页面上,则不会从服务器发送或接收任何内容.

为什么会这样?如何防止这种情况?

Dmi*_*kin 7

我的项目中遇到了完全相同的问题.
当您调用时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

  • 实际上它默认是假的..在你提到的相同文档中 (2认同)