扩展websocket节点服务器

时间:2014-02-04 23:26:24

标签: json node.js websocket redis node-redis

我知道这个问题已经部分问过(How to Scale Node.js WebSocket Redis Server?),但我想知道是否有任何替代方法可以在节点实例之间快速共享websocket对象,特别是ws类型套接字(https://github.com/einaros/ws) 。我尝试过redis并遇到了Web套接字对象是循环且难以序列化的问题。然后我使用了Crockford的cycle.js(https://github.com/douglascrockford/JSON-js/blob/master/cycle.js),但它似乎剥离了websocket对象的方法,因为我从节点收到错误后说“对象没有方法发送”后我从redis和retrocycled它。任何帮助将不胜感激。

先谢谢你,詹姆斯。

2 个答案:

答案 0 :(得分:0)

IMO你应该使用消息队列......例如(RabbitMQ)

  1. 应用程序从节点A和节点B开始,并连接到RabbitMQ
  2. 客户端A连接到节点A并订阅名为XXX Client
  3. 的队列
  4. 客户端B连接到节点B并订阅名为XXX的队列
  5. 客户端A向websocket服务器发送消息Websocket Server向节点A发送消息
  6. 节点A将消息发布到RabbitMQ队列XXX
  7. 节点B接收来自RabbitMQ的消息,因为它订阅了队列XXX
  8. 节点B向客户端B发送消息或将消息发布到节点B上的所有连接的客户端
  9. 因此,您只需要将Messaging队列放在您的架构中(RabbitMQ,ZeroMQ)等

答案 1 :(得分:0)

有一个库允许跨node.js进程和机器轻松扩展WebSocket,你可以查看它:

https://github.com/ClusterWS/ClusterWS