首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Node.js primus websocket聚类

Node.js primus websocket聚类
EN

Stack Overflow用户
提问于 2014-05-28 11:37:16
回答 1查看 760关注 0票数 1

尝试大多数websocket引擎,我得出的结论是,最好的方法是使用Primus (实时框架的通用包装器),以便能够测试可能出现的任何websocket框架,而不改变我的功能。

尽管Primus照它说的做了,但我发现如果我想扩大规模的话,我就会陷入这样的境地。

Primus有许多插件,其中两个插件是:primus集群和primus-redis房间。这两种方法都是为了在有许多节点进程时使用Redis pub-sub进行扩展。我面对的两个插件的问题是,我不能发送一个信息给一个单独的插座火花。这意味着火花不会被保存-传递给Redis,这样每个进程都知道总共有多少火花。

有谁知道如何实现这一点吗?

EN

回答 1

Stack Overflow用户

发布于 2014-06-02 11:41:36

primus-redis和primus-redis机房的问题在于,它们只实现广播,而不是从一个服务器->中发出不同服务器消息的火花。

至于房间黑客,你认为这是一个“好”的选择,但它肯定是一个黑客,并提供了大量的开销。我认为创建一个插件并不难:

  • 将spark.id添加到它接受的每个连接的redis (spark.id ->服务器地址)。
  • 当连接断开时,从redis中移除spark.id。
  • 为服务器添加发布/子通道(服务器地址),以便它能够接收消息。
  • 让这个通道使用spark.ids收听消息,并在Primus服务器上找到火花并写入消息。
  • 编写一个在redis中查找spark.id的方法,以便它知道服务器地址,并使用需要与spark.id一起写入的消息发布到通道。
  • 向npm发布模块,并获得大量免费啤酒;

写起来可能需要花一些时间,然后你建议的黑客攻击,但这可能是值得的努力。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23910598

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档