【发布时间】:2021-01-08 16:11:18
【问题描述】:
我正在开发一个 Node/Express 后端,它使用 socket.io 库将事件发送到前端。我们决定将它(在后端和前端)升级到版本 3,但我们遇到了一个目前无法解决的问题。我会试着解释一下:
- 每当客户端向后端进行身份验证时,它都会在它们之间打开一个套接字连接
- 我们使用
express-session库将新的套接字ID 保存到会话中,代码如下:
this._socketIO.on('connection', socket => {
// Add the socket id to the session
socket.request.session.socketId = socket.id;
socket.request.session.save();
logger().info(`WebSocket: User connected (ID: ${socket.id})`);
socket.on('disconnect', () => {
logger().info(`WebSocket: User disconnected (ID: ${socket.id})`);
});
});
- 将套接字库更新到 v3.0.4 后,会话不再具有
socketId字段。 - 我已经意识到,如果我重新启动后端服务器,而 UI 中有一个已登录的客户端(因此,存在一个现有的会话文件),它可以正常工作。如果我从 UI 中注销并再次登录(因此它会创建一个新的会话文件),它将无法再次工作。
我一直在查看官方页面 (https://socket.io/docs/v3/migrating-from-2-x-to-3-0) 上的迁移文档,但找不到此问题的答案。
有什么线索吗?提前致谢,
【问题讨论】:
标签: node.js socket.io express-session