pQuestions123
pQuestions123

Reputation: 4611

Streaming via socket io with multiple servers from single source

I have a single stream source S that produces ticker data.

I would like to integrate S into my node app that uses socket io. My app runs in a multiple server environment in production, let's say servers A and B.

Initially, I thought I would simply:

  1. Use the socket io redis adapter: https://github.com/socketio/socket.io-redis on both A and B.

  2. Connect both A and B to S and simply have A and B handle the chunks of data emanating from S by simply broadcasting the chunks into the appropriate rooms.

However, after thinking about this, I am realizing that I will probably run into an issue where both A and B broadcast the same data to the client (and the client receives duplicates of the same information). Am I thinking about this correctly? How can I avoid this?

Upvotes: 0

Views: 813

Answers (1)

Francois
Francois

Reputation: 3090

One client must be connected to one server, and the same connection remains open on the same server, it's called session stickyness, he will not have two connections open. In order to do that, you should use a proxy which will act as a load balancer on your pool of server, you can use nginx for example.

All you have to do is synchronise rooms across server to broadcast correctly to all users in a room (because some user will be in a room on server A and other on server B).

documentation about nginx and websockets: https://www.nginx.com/blog/nginx-nodejs-websockets-socketio/

Hope it helps

Upvotes: 1

Related Questions