我有一个nodejs聊天应用程序,其中多个客户端使用socketio连接到公共聊天室.我想将其扩展到多个节点进程,可能在不同的机器上.但是,连接到同一房间的客户端将无法保证能够访问同一节点
我想过让节点进程连接到redis.这至少解决了进程A将知道房间中有另一个用户,用户2但仍无法发送给用户2的问题,因为进程B控制该连接.有没有办法为redis注册一个“值已更改”的回调?
我在服务器环境中无法控制任何路由或负载平衡.
node.js进程都可以通过redis pub/sub订阅某个频道,并收听传递给该频道的消息.例如,当用户1连接到第一台计算机上的进程A时,您可以在redis中存储有关此用户的信息以及在哪台计算机上管理该进程的信息.然后,当连接到第二台机器上的进程B的用户2向用户1发送消息时,您可以将其发布到该通道,并检查哪台机器负责管理与用户1的通信,并相应地做出响应.