如何使socket.io在pm2集群模式下正常工作?

时间:2019-05-15 13:58:32

标签: node.js nginx redis socket.io pm2

我一直在寻找各种解决方案,但是当我将它们放在一起时,它看起来非常混乱。

我正在尝试为具有socket.io实现的应用程序实现pm2集群模式。现在,我了解了需要无状态的概念,以使我的应用程序在群集模式下正常工作。而且socket.io并非没有状态。困惑是,

1)我们的朋友Cam says表示,当我们使用最大数量的CPU时,只需实现socket.io-redis即可正常工作。
2)当我用socket.io says引用时,

  

注意:使用Redis适配器时仍需要粘性会话。”

对于1),根据我的研究,互联网应该不同意它会起作用。也许Cam先生很幸运能够将运输方式设为websocket,也许不必处理polling。但是同时我认为它应该起作用,因为redis-adapter是我们用来使其无状态的工具。

信息:它以websocket作为传输方式对我有用,但是我无法使用polling对其进行测试。

对于2),我认为我们可以将Joni先生的advice与“ pm2”在“群集”中(但在不同端口上)结合使用。然后我们心爱的nginxupstream的{​​{1}}组将给我们一种相同的效果。

此外,我想使我的应用程序具有弹性。不仅在集群级别,而且都可以扩展和扩展。鉴于我的应用程序在ip_hash中包含了socket.io实现和会话令牌管理,有哪些最佳实践?

我错过了什么吗?或者我在这里完全错了吗?哪种方法是最好的扩展方式?

1 个答案:

答案 0 :(得分:1)

我有solution !!!对我来说,它工作得很好!感谢@elad和贡献者。我已经进行了大量测试(超过2个月!),并且从未遇到问题。我不会通过逐行解释片段的方式来尊重作者。
我花了足够长的时间,因为回购中有未解决的问题,必须确定。现在,我确信这些问题可以通过理解不同的组件来解决。毕竟,这不是魔术!

看看,如果您仍有疑问/疑问,请告诉我。

相关问题