WebSocket-窗口关闭时可以运行自定义onclose函数吗?

时间:2019-03-03 22:05:22

标签: javascript websocket oncloselistener

在JavaScript中,我正在像这样实例化WebSocket:

var webSocket = new WebSocket('wss://example.com:8081');
webSocket.onclose = function () {
    // Custom function
}

但是,如果用户关闭浏览器窗口或退出浏览器,我的自定义onclose函数中的代码是否运行?我尝试在其中放置Ajax调用和webSocket.send()函数,但均未成功运行。

如果在关闭窗口或用户退出浏览器时onclose没有运行,一旦用户断开连接,在服务器上运行自定义代码的最佳方法是什么?现在,我最好的猜测是必须从服务器端执行代码–换句话说,正在运行的WebSocket服务器(在我的情况下是用php编写)需要内部onClose方法中的自定义代码。

1 个答案:

答案 0 :(得分:1)

onclose在套接字连接关闭时触发,而在窗口或浏览器关闭时则不一定。理论上,当另一个带有套接字的窗口关闭时,它应该触发,但是如果它自己的窗口则不会触发。

Id建议为beforeunload添加一个事件侦听器,该链接位于下面,当页面及其资源即将被卸载时会触发

https://developer.mozilla.org/en-US/docs/Web/Events/beforeunload

示例

window.addEventListener("beforeunload", function (event) {

});

另外,onunload可能是一个有用的监听事件