【发布时间】:2016-05-01 00:57:34
【问题描述】:
我想使用 socket.io,但我将运行我的应用程序的多个实例,所以这就是有趣的地方。
我需要在不同的端口上运行多个实例。这里没问题。
我决定不使用 Node 自己的集群,我将使用 Nginx 进行负载平衡(这就是我创建应用程序的多个实例的原因)。 Nginx支持websockets,所以也整理了这个。
鉴于会有多个实例,并非所有实例都不能直接相互通信(用户 A 连接到实例 X,如果用户 B 连接到实例 Y,则它们无法通信,因为服务器彼此独立),所以我需要使用 Redis 的 pub/sub 机制作为包装器,以模仿 socketio 的发射和广播功能。这样,即使我有一个应用程序的多个实例或在不同的服务器上运行它,只要他们连接到同一个 Redis 服务器,每个人都可以相互交谈。为此,我需要使用 socket.io-redis 和 socket.io-emitter 模块。
我说对了吗,这种方法有问题吗?
【问题讨论】: