3

我正在使用 Node.JS 和 Socket.IO 创建聊天,我使用持续时间为 10 的 XHR 轮询将其托管在 Heroku 上。

当我将页面留给客户端时,我想在服务器上自动调用 disconnect 方法,将其从其他客户端中删除。实际上已经完成了,但是......在客户端真正离开页面后2分钟,这很尴尬。

有没有办法在客户端不回复时立即调用断开方法?或者至少可以更快地知道客户何时不在?

我尝试使用 jQuery 在页面退出时关闭套接字客户端,但它不起作用。问题是使用socket.disconnect()是异步且非阻塞的,并且用户在请求完成之前离开......

4

2 回答 2

2

您可以使用heartbeat timeout,heartbeat interval和配置close timeoutsocket.io

在此页面中搜索heartbeat和: https ://github.com/LearnBoost/Socket.IO/wiki/Configuring-Socket.IOtimeout

于 2012-07-30T19:29:08.523 回答
0

如果您将'sync disconnect on unload'socket.io 客户端上的选项设置为 true,它将在 onbeforeunload 中发送一个同步 xhr 断开请求,该请求将断开套接字。

于 2014-02-23T04:04:12.853 回答