5

通常这并不重要,对于我的情况甚至可能不太重要,但我想知道是否有合理的方法来实现这一点。

我的页面会自动打开一个 Web 套接字连接。为了成为更好的客户端,我希望客户端自行清理并在页面卸载之前关闭 websocket。

我希望浏览器close()在页面卸载时有先见之明来调用我,但如果没有,我如何利用onbeforeunload消息(或类似消息)进行一些“最终清理”(atexit()与C)?

假设我有一些系统,我希望我的客户出于某种原因向我的 websocket 服务器发送“退出”消息。

我现在可以这样做:

$(window).on('beforeunload', function () {
    websocket.close(); // websocket is a WebSocket
});

但是假设close()实际上是一个异步调用(是吗?),我想确保在实际卸载页面之前触发 socket.onclose 回调!这可以做到吗?

4

2 回答 2

1
window.onunload=function(){
//your code here
}

我想我们确实有这个。

于 2012-08-07T19:06:22.267 回答
1

确保异步调用在现代浏览器中完全执行没有可靠的方法。旧版本可能会被 while 循环阻止,但当前的浏览器会终止任何进程并继续。原因是他们希望用户体验快速,你阻止他们对他们有害。

于 2012-08-07T19:10:57.257 回答