当前位置 : 主页 > 网页制作 > Nodejs >

如何让Node.js进程相互通信

来源:互联网 收集:自由互联 发布时间:2021-06-16
我有一个nodejs聊天应用程序,其中多个客户端使用socketio连接到公共聊天室.我想将其扩展到多个节点进程,可能在不同的机器上.但是,连接到同一房间的客户端将无法保证能够访问同一节点
我有一个nodejs聊天应用程序,其中多个客户端使用socketio连接到公共聊天室.我想将其扩展到多个节点进程,可能在不同的机器上.但是,连接到同一房间的客户端将无法保证能够访问同一节点进程.例如,用户1将命中节点进程A,用户2将命中节点进程B.它们在同一个房间,因此如果用户1发送消息,则用户2应该获得它.实现这一目标的最佳方法是什么,因为它们的连接由不同的进程管理?

我想过让节点进程连接到redis.这至少解决了进程A将知道房间中有另一个用户,用户2但仍无法发送给用户2的问题,因为进程B控制该连接.有没有办法为redis注册一个“值已更改”的回调?

我在服务器环境中无法控制任何路由或负载平衡.

node.js进程都可以通过redis pub/sub订阅某个频道,并收听传递给该频道的消息.例如,当用户1连接到第一台计算机上的进程A时,您可以在redis中存储有关此用户的信息以及在哪台计算机上管理该进程的信息.然后,当连接到第二台机器上的进程B的用户2向用户1发送消息时,您可以将其发布到该通道,并检查哪台机器负责管理与用户1的通信,并相应地做出响应.
网友评论