gpt4 book ai didi

Node.js primus websocket 集群

转载 作者:太空宇宙 更新时间:2023-11-04 01:04:58 28 4
gpt4 key购买 nike

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

尽管 Primus 言出必行,但我发现自己处于想要扩展的境地。

Primus 有很多插件,其中两个是:primus-cluster 和 primus-redis-rooms。这两个是使用 Redis pub-sub 以便在有许多 Node 进程时进行扩展的。我使用这两个插件面临的问题是我无法向单个套接字 Spark 发送消息。这意味着 Spark 不会被保存 - 传递到 Redis,以便每个进程知道总共有多少个 Spark 。

有人知道如何实现这个吗?

最佳答案

primus-redis 和 primus-redis rooms 的问题是仅实现广播,而不是来自一台服务器 -> 在不同的服务器消息传递上产生 Spark 。

至于你建议的房间黑客是一个“好的”替代方案,但它绝对是一个黑客并且提供了大量的开销。我认为创建一个插件并不难:

  • 将 Spark.id 添加到 Redis(spark.id -> 服务器地址),用于它接受的每个连接。
  • 当连接断开时,从redis中删除spark.id。
  • 为服务器添加发布/订阅 channel (服务器地址),以便其可以接收消息。
  • 让该 channel 监听带有spark.ids的消息,并在Primus服务器上找到spark并写入消息。
  • 编写一个在redis中查找spark.id的方法,这样它就知道服务器地址,并向 channel 发布需要与spark.id一起写入的消息。
  • 将模块发布到 npm 并获得大量免费啤酒;-)

与您建议的黑客相比,编写它可能需要更长的时间,但这可能是值得的。

关于Node.js primus websocket 集群,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23910598/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com