在nodejs分叉进程之间共享数千个打开的websockets

我正在开发一个由移动应用程序,桌面应用程序和服务器组成的项目。 服务器将需要随时在桌面应用程序中维护一个开放的套接字(dropbox如何做!)。 移动应用程序打开后,移动应用程序和服务器之间将打开一个套接字,桌面应用程序将向移动应用程序发送事件(可能带宽相当低),反之亦然。

服务器最大的障碍是在一台相当普通的服务器上同时打开很多套接字。 大多数时候,由于人们不会使用应用程序,套接字将闲置。 我只有一个人,而且我不想在服务器成本上花费一大笔钱,所以我想我会selectnodejs,因为它能够以低内存使用率打开大量websocket(通常我会使用Java,但我认为内存将很快成为一个问题)。

我无法打包的问题是处理nodejs和cluster api。 由于集群API生成一个单独的nodejs进程,我将如何共享分叉进程之间的WebSocket连接? 如果我不能做到这一点,我必须保证,移动websocket是打开在同一个节点进程,它是桌面客户端websocket打开。 不知道我能做到这一点。

我有什么select?

Socket.io有一些关于如何在集群中使用它的文档,你需要将“引用”存储到一个可用于所有集群的存储中的可用套接字中,然后使用这些存储的引用来确定每个集群的IP等连接的用户

http://socket.io/docs/using-multiple-nodes/

如果这看起来有些复杂,那么有一些模块可以为套接字引用创build一个“存储”,并使其在所有群集实例中都可用

http://socketcluster.io/#!/
https://github.com/elad/node-cluster-socket.io

还有其他几个模块可供使用,这样可以轻松跨集群使用套接字,只需确保它们使用某种“粘性会话”的实现,而不仅仅是基本的Redis存储,因为这显然有一些扩展问题。