2

我在某个端口下打开了 websocket,当客户端 web 浏览器关闭时,我希望 websocket 干净地关闭,以便服务器程序继续运行并接受新的连接。

现在,我的客户端代码如下:

window.addEventListener('load', function(){
  ws = new WebSocket(url);
  ws.onopen = function(e){...};
  ws.onmessage = function(e){...};
  ws.onerror = function(e){...};
  ws.onclose = function(e){
    alert('Browser Closed');
  };
  window.onbeforeunload = function(e){
    ws.close();
  };
}, false);

当我运行服务器并打开网络浏览器进行连接时,它第一次工作。然后,在我关闭浏览器并尝试再次连接后,由于使用了端口,我收到错误消息。这意味着,当我在第一次连接后关闭浏览器时,websocketws并没有完全关闭。我正在使用 Google Chrome,并且我读到 Chrome disables onbeforeunload,因此绑定到该事件的函数可能不会被执行。ws.onclose我可以从关闭浏览器时执行的警报消息中确认。如何使 websocket 干净地关闭并在浏览器关闭时释放端口?我是否也必须在服务器端做一些事情?

4

0 回答 0