问题
I have a node app that I connect to from a browser using WebSockets.
If I run this app under a supervisor (slc run --cluster cpu myapp.js
), will a websocket connection be always forwarded to the same worker once established? Or will the supervisor do some sort of load balancing when forwarding messages send to this connection?
回答1:
strong-supervisor does absolutely no load balancing or clustering on its own: it auto-starts and configures node cluster (http://nodejs.org/api/cluster.html)
Node cluster distributes connections at the TCP level, it knows nothing about the protocols running over them.
When using websockets, you have two choices, use nginx or another load balancer that is websocket aware, or don't assume websocket and http connections have process affinity, and keep shared state out of process, probably a database.
If using socket.io, look at https://github.com/automattic/socket.io-redis and https://github.com/strongloop/strong-cluster-socket.io-store
来源:https://stackoverflow.com/questions/28071314/how-does-strongloop-supervisor-handle-websocket-connections