1

我在设置集群node.js / socket.io应用程序时遇到了问题,它使用 socket.io 存储,不是基于 Redis,而是基于 MongoDB。我需要提一下,我的应用程序使用 Mongo 来存储数据。所以我不想设置另一个数据库只是为了让 soket.io 跨多个进程工作。

我找到了一个选项 - mong.socket.io,但看起来我无法使用节点集群进行这项工作。我正在使用node: 0.10.10socket.io: 0.9
我正在寻找任何可以让我使用 MongoDB 作为在单独进程上运行的 socket.io 的存储的解决方案。

指望你,谢谢。

4

1 回答 1

7

任何集群工作者都可以使用mongodb或 mongoose轻松访问 MongoDB ,以获取所需的数据。它还可以在本地将该数据存储为缓存。
一旦 socket.io 客户端连接,它将绑定到其中一个工作人员,并且在执行期间不会交换工作人员。
为了共享会话,您需要为 socket.io 创建会话中间件,该中间件将向其中一名工作人员询问来自 MongoDB 的会话详细信息。检查这个答案,它解释了如何从共享会话详细信息访问 socket.io 中的会话数据。为了使其集群化,而不是 MemoryStorage 使用connect-mongo,它允许在 mongo 中存储会话数据,它将使会话详细信息在工作人员之间共享。

于 2013-06-26T10:52:12.140 回答