使用 SocketIO 中的聊天室查找用户状态



我正在尝试在用户联机和脱机时发出事件。由于用户可以打开多个选项卡,因此使用on('connect')on('disconnect')在线查找用户将不起作用

相反,每次用户加入时,我都会为每个用户创建一个房间并加入他们。要检查用户是否在线,只需计算编号。的客户那个房间。如果是0他处于离线状态。如果>1他在线。

但我想在他在线和离线时向管理员发出一个均匀的信息。我怎样才能做到这一点?

.on('disconnect', ...)

当您从他们的房间中删除连接时,请检查计数。如果在删除计数之前计数为 1,则用户现在处于脱机状态(删除用户后(。

如果您的应用中有多个页面,或者您的用户可能会点击刷新,则您还必须允许在连接之前暂时断开连接。在这种情况下,当您检测到房间计数已变为零时,请将计时器设置为一小段时间,然后再次检查。如果计时器触发时计数仍为零,则可以将它们视为脱机。

如果他们只是在页面之间导航,计数将变为零,然后在计时器触发之前返回到 1。 每当收到connect事件时,都会清除该用户挂起的任何计时器。 为此,您必须跟踪某些用户关联对象上的计时器。

最新更新