-2
我们正在通过节点js项目中的socket.io实现聊天和其他通知。将用户套接字映射存储到全局变量中
我们需要保持用户 - >套接字映射。
为此,我们在app.js
global.user_sockets = {};
声明全局变量,当令牌authetication后新的连接创建分配用户ID,插座映射user_sockets阵列。
user_sockets[data.userId]=socket;
对于使用全局变量有很多推测。一些用户表示,使用多个进程时会不太好。
对此有何解决方案?
你看看Redis的发布/订阅吗? – Gntem
我们也考虑过这个问题,但是添加另一个内存管理层而不是这个实现有用吗? – jit
好吧,如果你的用户通过登录开始会话,你可以将socket.id和用户会话ID关联起来,然后可以使用传递的socket.io服务器对象作为参数,并调用发出等等。你也可以使用Redis发布/订阅并发布格式化的消息,并让订阅者函数处理所有内容,并在整个工作中将其保持为最小。许多人会同意使用全局变量不是最好的选择。您可能需要评估许多/其他选项以得出最适合您的应用程序的选项。 – Gntem