我正在使用Node.JS和Socket.IO创建聊天,我使用持续时间为10的XHR轮询在Heroku上托管它。
当我离开我的客户端页面时,我想在服务器上自动调用disconnect方法,将其从其他客户端删除。它实际上已经完成了但是...客户真的离开了页面2分钟后,这很尴尬。
有没有办法在客户端不回复时立即调用disconnect方法?或者至少知道客户何时不在的时候会更快一点?
我试图在页面退出时用jQuery关闭套接字客户端但它不起作用。问题是使用socket.disconnect()
是异步的,非阻塞的,用户在请求完成之前就离开了......
答案 0 :(得分:2)
您可以使用heartbeat timeout
配置的heartbeat interval
,close timeout
和socket.io
值进行游戏。
在此页面中搜索heartbeat
和timeout
:https://github.com/LearnBoost/Socket.IO/wiki/Configuring-Socket.IO
答案 1 :(得分:0)
如果将socket.io客户端上的'sync disconnect on unload'
选项设置为true,它将在onbeforeunload中发送一个同步xhr断开连接请求,该请求将断开套接字。