我正在使用node.js表达框架构建简单的学习聊天应用程序。我有一个问题。 如果用户有多个选项卡处于活动状态,则他会在一个选项卡上注销。我想关闭与其他选项卡的连接,并重定向到登录页面。但我遇到了一个问题。即使用户已注销其他套接字会话未更改(我使用的是passport.socketio包,因此我在socket.handshake.user中有当前用户)。我做错了什么?提前谢谢。
答案 0 :(得分:5)
如果您有n个不同的标签,实际上是n个不同的套接字。实现您想要的方法的一种方法是使来自特定用户的所有套接字加入单个room。
io.on('connection', function (socket) {
socket.join(socket.handshake.user.id);
// rest of your code
}
在注销代码中向该特定房间发出“注销”事件。
io.sockets.in(socket.handshake.user.id).emit('logout')
现在在客户端,您可以在“注销”上编写一个事件监听器,重定向到您想要的位置。
答案 1 :(得分:0)
在您的应用中,您必须查看所有打开的套接字,找到匹配的用户名并手动终止。