维护在线用户计数Socket.io NodeJS

时间:2018-06-19 14:09:30

标签: javascript node.js socket.io

我试图跟踪所有登录我的socket.io / nodejs应用程序的用户。

当有人登录时,我只是这样做:

sessionobj[result[0].username] = sessionId;

如果有人在多个选项卡中打开站点,这也可以很好地工作,因为他们仍然具有相同的用户名,并且只会被添加到sessionobj中一次。

当某人关闭选项卡之一时,会发生此问题。理想情况下,我希望用户在未打开任何选项卡时“注销”,但是,我不确定如何完成此操作。例如,如果用户打开了2个标签,然后添加以下行:

delete sessionobj[socket.handshake.session.username];

对于socket.on('disconnect'事件,即使另一个标签仍然保持打开状态,用户在关闭一个标签时也会被删除。有什么方法可以准确跟踪此事吗?

1 个答案:

答案 0 :(得分:0)

只需将有关当前标签页数的信息存储在某处,例如在本地存储中。每当打开选项卡时,便添加一个,而当关闭选项卡时,则从所述数字中减去一个。 因此,您知道打开了多少个窗口,并且当应用程序周围有更多选项卡时,根本无法调用断开事件。