我试图跟踪所有登录我的socket.io
/ nodejs
应用程序的用户。
当有人登录时,我只是这样做:
sessionobj[result[0].username] = sessionId;
如果有人在多个选项卡中打开站点,这也可以很好地工作,因为他们仍然具有相同的用户名,并且只会被添加到sessionobj
中一次。
当某人关闭选项卡之一时,会发生此问题。理想情况下,我希望用户在未打开任何选项卡时“注销”,但是,我不确定如何完成此操作。例如,如果用户打开了2个标签,然后添加以下行:
delete sessionobj[socket.handshake.session.username];
对于socket.on('disconnect'
事件,即使另一个标签仍然保持打开状态,用户在关闭一个标签时也会被删除。有什么方法可以准确跟踪此事吗?
答案 0 :(得分:0)
只需将有关当前标签页数的信息存储在某处,例如在本地存储中。每当打开选项卡时,便添加一个,而当关闭选项卡时,则从所述数字中减去一个。 因此,您知道打开了多少个窗口,并且当应用程序周围有更多选项卡时,根本无法调用断开事件。