我即将从 socket.io 开始,这更像是一个理论问题,假设我想使用 socket.io 向特定用户发送消息,通常我必须使用相关的用户 ID 存储 socketid 和发送时,获取socketid并发送到。
但是如果我有多个服务器进程正在运行呢?我必须确保客户端实际连接到的正确服务器进行发送。是否可以 ?
对于多个服务器实例,您需要有一个用于身份验证的缓存服务(memcache、redis)和一个所有节点实例都绑定到的中央消息队列服务(stormMQ、rabbitMQ、AQ、基于 java 的 mq)。因此,一个 Node 实例为每个客户端/通道/任何东西绑定到消息队列,并且所有其他绑定的 Node 实例接收消息并将它们转发给客户端。
问题通常是关于如何使用 WebSocket 集群:
每次后端想要通知客户端时,它都会向负责与客户端通信的 WebSocket 集群发送一个请求。一种可能的情况:
笔记: