socketio与redis和haproxy进行服务器通信

时间:2016-05-11 15:28:40

标签: node.js redis socket.io haproxy

我正在开发一个使用SocketIO的项目,并且应该可以进行水平扩展。我正在使用

  • 使用HAProxy的负载均衡器
  • 多节点服务器(2-4)
  • 数据库服务器(Redis和MongoDB)

我能够使用roundrobin方法将传入的Socket连接重定向到节点服务器。套接字连接是稳定的,如果我使用socket.emit()我接收数据。我也能够发送到连接到同一节点服务器的其他套接字连接。

我在以下情况中面临问题:

用户A连接到节点服务器1,用户B连接到节点服务器2

我的目的是将套接字数据存储在redis中

如果用户A想要向用户B发送一些数据,我如何告诉节点服务器2从节点服务器1向用户B发送数据

请让我知道如何实现这一目标(如果可能,请参考参考资料)。

提前致谢。

2 个答案:

答案 0 :(得分:0)

这种情况与Redis的Pub / Sub情况相匹配。

如果还没有,请尝试Pub/Sub

答案 1 :(得分:0)

看看socket.io Redis adapter。它应该正是您所需要的。

clients()方法特别有希望。请记住,socket.io为每个客户端创建一个唯一的空间。