如何检测该用户的连接丢失或他的NodeJS socket.io关闭浏览器窗口(how to dete

2019-09-01 10:33发布

我对Node.js和受Socket.io聊天应用程序,用户可以连接和一个按钮断开......我有这是完全与我的定义事件触发用户的帮助下管理在线用户列表。

但问题是我无法检测用户是否已经失去了他的连接,或者无需手动断开自己(通过断开按钮)关闭浏览器窗口...

当用户断开自己不是当他失去了连接这socket.io事件仅触发。

socket.on('disconnect',function(){
   console.log('user disconnected');  });

我想一些很好的机制来保持对用户的眼睛,以更新我的在线用户列表。

Answer 1:

这有什么区别? 关闭窗口,切割以太网线......这是服务器都是一样的:连接的结束。

读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