我对Node.js和受Socket.io聊天应用程序,用户可以连接和一个按钮断开......我有这是完全与我的定义事件触发用户的帮助下管理在线用户列表。
但问题是我无法检测用户是否已经失去了他的连接,或者无需手动断开自己(通过断开按钮)关闭浏览器窗口...
当用户断开自己不是当他失去了连接这socket.io事件仅触发。
socket.on('disconnect',function(){
console.log('user disconnected'); });
我想一些很好的机制来保持对用户的眼睛,以更新我的在线用户列表。
这有什么区别? 关闭窗口,切割以太网线......这是服务器都是一样的:连接的结束。
读socket.io文档: https://github.com/LearnBoost/socket.io/wiki/Exposed-events
socket.on(“脱节”,函数(){}) - 断开事件在所有情况下开火,当客户端 - 服务器连接被关闭。 它激发就想,不想要的,移动,unmobile,客户端与服务器断开连接。
你不应该依靠你的按钮,因为人们可以在不使用该按钮断开连接。 使用断开连接事件,一旦插座断开(插槽,而不是用户,造成节点只知道插座),你将不得不找出谁是那个插座的“老板”和标志他为“断开连接”。 甚至更好,等待几秒钟,然后旗他为下线。 为什么? 因为断开事件会触发即使用户只需重新加载页面,或导航到另一个。 所以,如果你等待几秒钟,用户将再次上线了。
我有这个问题太,我结束了创建每X秒和标志用户运行为脱机时,他们不拥有任何插座或当他们似乎是走(很长一段时间内没有活动)了“守望者”。
文章来源: how to detect that user's connection is lost or he closed the browser window in Nodejs socket.io