通过套接字io与单个源的多个服务器进行流式传输

时间:2017-09-26 19:24:43

标签: node.js sockets socket.io

我有一个生成股票代码数据的流源S.

我想将S集成到使用socket io的节点应用程序中。我的应用程序在生产中的多服务器环境中运行,让我们说服务器A和B.

最初,我以为我会这样做:

  1. 在A和B上使用socket io redis适配器:https://github.com/socketio/socket.io-redis

  2. 将A和B连接到S,只需让A和B处理从S发出的数据块,只需将块播放到适当的房间即可。

  3. 然而,在考虑了这一点之后,我意识到我可能会遇到一个问题,即A和B都向客户端广播相同的数据(并且客户端接收相同信息的副本)。我正确地考虑了这个吗?我怎么能避免这个?

1 个答案:

答案 0 :(得分:1)

一个客户端必须连接到一个服务器,并且同一个连接在同一服务器上保持打开状态,它称为会话粘性,他不会打开两个连接。为此,您应该使用代理作为服务器池上的负载均衡器,例如,您可以使用nginx。

您所要做的就是在服务器之间同步房间,以便正确地向房间中的所有用户广播(因为某些用户将在服务器A上的房间中,而在服务器B上的其他用户中)。

有关nginx和websockets的文档: https://www.nginx.com/blog/nginx-nodejs-websockets-socketio/

希望有所帮助