我想使用socket.io,但我将运行我的应用程序的多个实例,这样就会让事情变得有趣。
我需要在不同的端口上运行多个实例。没问题。
我决定不使用Node自己的集群,我将使用Nginx进行负载平衡(这就是我创建应用程序的多个实例的原因)。 Nginx支持websockets,所以这个也被整理出来。
鉴于存在多个实例,并非所有实例都不能直接相互通信(用户A连接到实例X,如果用户B连接到实例Y,则他们无法通信,因为服务器彼此独立),所以我需要使用Redis的pub / sub机制作为包装器来模仿socketio的发射和放大器。广播功能。这种方式即使我有一个应用程序的多个实例或在不同的服务器上运行它,只要它们连接到同一个Redis服务器,每个人都可以相互通信。为此,我需要使用socket.io-redis和socket.io-emitter模块。
我是否做对了,这种方法有问题吗?
答案 0 :(得分:1)
听起来很可能除了你确定在不同的端口上需要多个Node应用实例吗?因为您可能能够处理比使用一台服务器更多的负载,并且有办法用socket.io分隔出不同的通信通道。