4

我正在使用 node.js express 框架构建简单的学习聊天应用程序。我有一个问题。如果用户有多个选项卡处于活动状态,并且他在一个选项卡上注销。我想关闭与其他选项卡的连接并重定向到登录页面。但是我遇到了一个问题。即使用户已注销其他套接字会话也不会更改(我使用的是 passport.socketio 包,所以我在 socket.handshake.user 有当前用户)。我做错了什么?提前致谢。

4

2 回答 2

5

如果您有 n 个不同的选项卡,则实际上是 n 个不同的套接字。实现您想要的一种方法是使来自特定用户的所有套接字加入一个房间

io.on('connection', function (socket) {
    socket.join(socket.handshake.user.id);
    // rest of your code
}

并在注销代码中向该特定房间发出事件“注销”。

io.sockets.in(socket.handshake.user.id).emit('logout')

现在在客户端,您可以在“注销”上编写一个事件侦听器,该侦听器重定向到您想要的位置。

于 2013-10-21T06:36:10.590 回答
0

在您的应用程序中,您必须查看所有打开的套接字,找到匹配的用户名并手动终止它们。

于 2013-10-20T21:09:40.667 回答