通常情况下这并不重要,对我的情况来说甚至可能不太重要,但我想知道是否有合理的方法来实现这一点。
我的页面会自动打开Web套接字连接。为了成为更好的客户端,我希望客户端自己清理并在页面卸载之前关闭websocket。
我希望在卸载页面时,浏览器会有先见之明地为我调用close()
,但如果没有,我怎样才能利用onbeforeunload
消息(或者某些消息)这样做“最终清理”(与C中的atexit()
不同)?
假设我有一些系统,我希望我的客户端出于某种原因向我的websocket服务器发送“退出”消息。
我现在可以这样做:
$(window).on('beforeunload', function () {
websocket.close(); // websocket is a WebSocket
});
但是假设close()
实际上是一个异步调用(是吗?),我想确保 socket.onclose回调在实际卸载页面之前触发!可以这样做吗?
答案 0 :(得分:1)
window.onunload=function(){
//your code here
}
我想我们确实有这个。
答案 1 :(得分:1)
确保在现代浏览器中完全执行异步调用没有确定的方法。较旧的版本可以通过while循环来保留,但是当前的浏览器将终止任何进程并继续。原因是他们希望用户体验快速,你持有它们会对他们造成伤害。