不会保存套接字 IO 套接字属性



我正在使用带有SocketIO的NodeJS。当我在异步函数中分配属性时,如下所示

socket.on(channel, (data) => {socket.username = "username" });

之后在其他地方使用此属性。(在另一个socket.on回调函数中),我收到socket.username undefined的消息。

我还单独创建了一个 var 用户名,但结果是一样的。分配的值在外部函数中不可见。

感谢您的任何帮助。

每个套接字连接都有自己的上下文。

如果要在上下文之间共享数据 - 必须将其保留在可全局访问的位置。

有很多方法可以实现它。


其中简单的如下:

1) 创建包含以下内容的模块GlobalContext

module.exports = new Map();

2)并像这样传递您的上下文变量:

const context = require('./GlobalContext');
socket.on(channel, (data) => {
  context.set('username', "someone"); 
});

3)从外部访问:

const context = require('./GlobalContext');
const username = context.get('username');


附言请记住,在容器化环境中,可以并行处理许多套接字io实例,必须以不同的方式完成。

我的示例适用于已取消群集 1 个 socket.io 应用实例的情况。

相关内容

  • 没有找到相关文章

最新更新