我在某个端口下打开了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);
当我运行服务器并打开Web浏览器进行连接时,它首次运行。然后,在我关闭浏览器并尝试再次连接后,我收到错误,因为使用了端口。这意味着,当我在第一次连接后关闭浏览器时,websocket ws
没有干净地关闭。我使用的是谷歌浏览器,我读到Chrome禁用onbeforeunload
,因此绑定到该事件的功能可能无法执行。我可以从警报消息确认浏览器关闭时ws.onclose
已执行。如何在关闭浏览器时使websocket干净地关闭并释放端口?我是否也必须在服务器端做一些事情?