如何使粘性会话与socket.io(不带pm2或不带pm2)一起工作?

Qiu*_*ang 5 node.js socket.io pm2 sticky-session

尽管socket.io文档说“ 粘性会话 ”可以使socket.io与节点群集一起工作。我只是无法使其工作。

我找到了PM2几个问题开了反对的话,最接近的解决方案,我能找到的是这个,“力只使用websock选项”,在所有不使用粘性会话。

有没有人有过使节点群集与socket.io兼容的经验?

-------更新--------

我检查了这里提到的其他两个粘性会话实现,sticky-session与socket.io-sticky-session节点js库!哪个更好?,找到“粘性群集”即可完成工作。

我学到的另一个教训是,粘性会话不适用于pm2集群,例如,从https://github.com/uqee/sticky-cluster/issues/26进行确认。因此,在使用socket.io时,请勿使用pm2集群模式(或仅使用“ websocket”传输)。

socket.io文档中提到的“粘性会话”实现实际上也可以工作。如果有人需要有关代码示例的更多说明,请在此处检查https://github.com/elad/node-cluster-socket.io

我的问题待解决,因为我仍然想看看是否还有其他输入。

Qiu*_*ang 0

我在 2017 年问过这个问题,当时 socket.io 项目已经闲置了一段时间,但自 2021 年起,socket.io 再次得到积极维护!

其网站现在有 2 篇文章和“官方”答案来解决这个问题:

  1. https://socket.io/docs/v4/pm2/讨论了pm2的3种解决方案,例如仅使用websocket而不带粘性会话或使用@socket.io/pm2带粘性会话。

  2. https://socket.io/docs/v4/using-multiple-nodes/更详细地讨论了粘性会话和一些多节点解决方案,简而言之,如果您想要长轮询回退,您将需要粘性会话。