【发布时间】:2012-07-29 00:12:37
【问题描述】:
我有一个异步函数(关闭套接字),当用户离开页面时我必须执行它。我试图通过 jQuery 来做到这一点:
$(window).unload(function() {
socket.disconnect();
});
但是,这不起作用,因为该函数是异步的,并且客户端在到达方法末尾时立即离开页面,也就是说立即并且不执行断开套接字的请求。
我们可以提供在socket.disconnect() 函数执行结束时执行的回调。也许这会有所帮助...
javascript有没有办法解决这个问题?
【问题讨论】:
-
棘手。难道你不能检测到服务器端的离开并从那里关闭它吗?
-
已经试过了,我用的是Node.JS,在客户端离开2分钟后检测到。这就是为什么我想尝试“客户方式”,以提高效率。此外,Node 有时会检测到错误的断开连接,因此这可能是真正检测到断开连接的唯一正确方法。
-
这是
socket.io吗?仅供参考,通常这个问题是通过使用某种心跳来检测服务器端的连接关闭来解决的。 -
@igorw 是的,但与客户端真正断开连接的时间相比,这检测到它真的很晚。
-
不确定 Socket.IO 是如何工作的,但这似乎毫无意义,套接字应该在页面更改时断开连接,连接不再打开。我编写了自己的 WebSocket 服务器,所以我有能力做到这一点。
标签: javascript websocket