我有一个节点应用程序,我使用WebSockets从浏览器连接。
如果我在主管(slc run --cluster cpu myapp.js
)下运行此应用程序,一旦建立了websocket连接,是否会始终转发给同一个工作人员?或者,当转发消息发送到此连接时,主管是否会进行某种负载平衡?
答案 0 :(得分:4)
strong-supervisor完全没有负载均衡或集群:它自动启动并配置节点集群(http://nodejs.org/api/cluster.html)
节点集群在TCP级别分配连接,它对在其上运行的协议一无所知。
使用websockets时,您有两种选择,使用nginx或其他支持websocket的负载均衡器,或者不要假设websocket和http连接具有进程关联,并保持共享状态不在进程中,可能是数据库。
如果使用socket.io,请查看https://github.com/automattic/socket.io-redis和https://github.com/strongloop/strong-cluster-socket.io-store