node.js - 在套接字之间共享 session 。 (从所有事件选项卡中注销用户)

标签 node.js session express socket.io

我正在使用 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/

相关文章:

javascript - 我可以向 CLI 添加自己的命令吗?

node.js - TypeError : Object {. ..} 没有方法 'find' - 当将 mongoose 与express一起使用时

node.js - 为什么我的 Node.js 脚本中的 MongoClient 没有完成?

javascript - 使用两个不同的 js 从一个 HTML 页面发送到另一个

c# - MVC 在同一用户登录后注销所有事件 session

javascript - Gitlab 使用 Axios 或 Curl 请求发布/放入 Node - 无法写入资源 - 400 错误

javascript - 使用 session Javascript 存储数据

node.js - 如何测试 API 端点是否存在可由多个代码路径触发的错误路径?

javascript - sequelize 原始查询错误 : query is not a function

javascript - Express.js - 如何修改路由中的 app.locals 变量