Node.js primus websocket集群

尝试大部分的websocket引擎,我总结出最好的方法是使用Primus(一个实时框架的通用包装器),以便能够testing任何websocket框架,可能出现而不改变我的function。

即使那个Primus做了它所说的话,我发现自己正处于这种情况下我想要扩展。

Primus有很多插件,其中两个是:primus-cluster和primus-redis-rooms。 当你有很多节点进程时,这两个是使用Redis pub-sub来扩展的。 我遇到的两个插件的问题是,我不能发送消息到单个套接字 – 火花。 这意味着火花不会被保存 – 传递给Redis,以便每个进程知道总共有多less个火花。

有没有人有如何实现这个想法?

primus-redis和primus-redis房间的问题是,只能实现广播,而不是从一个服务器 – >在不同的服务器消息传递的火花。

至于房间破解,你build议是一个“好”的select,但它绝对是一个黑客,并提供了大量的开销。 我不认为这是很难创build一个插件:

  • 将spark.id添加到其接受的每个连接的redis(spark.id – >服务器地址)。
  • 当连接断开时,从redis中删除spark.id。
  • 为服务器添加pub / sub通道(服务器地址),以便可以接收消息。
  • 使此通道使用spark.ids来侦听消息,并在Primus服务器上find火花并写入消息。
  • 编写一个在redis中查找spark.id的方法,以便知道服务器地址,并向需要与spark.id一起写入消息的通道执行PUBLISH。
  • 发布模块到NPM,并获得大量的免费啤酒;-)

编写那么你所build议的黑客可能需要一些时间,但这可能是值得的努力。