【问题标题】:Disconnect event gets fired 2 minutes later断开连接事件在 2 分钟后触发
【发布时间】:2012-07-30 19:22:17
【问题描述】:

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

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

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

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

【问题讨论】:

  • 好问题,希望尽快解决。 +1

标签: node.js socket.io


【解决方案1】:

您可以使用 socket.io 配置的 heartbeat timeoutheartbeat intervalclose timeout 值。

在此页面中搜索heartbeattimeouthttps://github.com/LearnBoost/Socket.IO/wiki/Configuring-Socket.IO

【讨论】:

  • io.set("heartbeat timeout", 10);io.set("heartbeat interval", 5); 似乎根本没有改变任何东西......这很奇怪。
  • 我将 socket.io 降级到 0.9.4 版本,因为它是一个错误,尽管它仍然无法在我的网络主机上运行。终于给了你分数,因为你是唯一一个尝试过的人。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2015-03-25
    • 1970-01-01
    • 2016-05-22
    • 2016-09-20
    • 2014-04-03
    • 2018-01-28
    • 1970-01-01
    • 2014-01-08
    • 2018-09-20
    相关资源
    最近更新 更多