我在设置群集 node.js / socket.io 应用程序时遇到问题,使用socket.io存储,不是基于Redis而是基于MongoDB。 我需要提一下我的应用程序使用Mongo来存储数据。因此,我不想设置另一个数据库,只是为了使soket.io可以在多个进程中工作。
我找到了一个选项 - mong.socket.io,但看起来我无法使用节点集群。
我正在使用节点:0.10.10 , socket.io:0.9
我正在寻找任何解决方案,让我使用MongoDB作为在单独进程上运行的socket.io的存储。
指望你,谢谢。
答案 0 :(得分:7)
任何群集工作者都可以使用mongodb或mongoose轻松访问MongoDB以获取所需数据。它也可以在本地将数据存储为缓存 一旦socket.io客户端连接,它将绑定到一个worker,并且在执行期间不会交换worker 为了共享会话,您需要为socket.io创建会话中间件,该中间件将从其中一个工作人员请求来自MongoDB的会话详细信息。检查this答案,该答案解释了如何从共享会话详细信息访问socket.io中的会话数据。并且为了使其成为集群,而不是MemoryStorage使用允许在mongo中存储会话数据的connect-mongo,它将使工作人员共享会话详细信息。