我正在使用 node.js express 框架构建简单的学习聊天应用程序。我有一个问题。 如果用户有多个事件选项卡,他在一个选项卡上注销。我想关闭与其他选项卡的连接并重定向到登录页面。但是我遇到了一个问题。即使用户已注销,其他套接字 session 也不会改变(我正在使用 passport.socketio 包,所以我在 socket.handshake.user 有当前用户)。我做错了什么?提前致谢。
最佳答案
如果你有 n 个不同的选项卡,那实际上是 n 个不同的 socket 。实现您想要的一种方法是让来自特定用户的所有套接字加入单个 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')
现在在客户端,您可以在“注销”上编写一个事件监听器,重定向到您想要的位置。
关于node.js - 在套接字之间共享 session 。 (从所有事件选项卡中注销用户),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19482860/