gpt4 book ai didi

node.js - 在 Nodejs fork 进程之间共享数千个开放的 WebSocket

转载 作者:太空宇宙 更新时间:2023-11-03 22:00:13 25 4
gpt4 key购买 nike

我正在开发一个由移动应用程序、桌面应用程序和服务器组成的项目。服务器需要始终与桌面应用程序保持打开的套接字(dropbox 是如何做到的!?)。当移动应用程序打开时,将在移动应用程序和服务器之间打开一个套接字,桌面应用程序将向移动应用程序发送事件(可能带宽相当低),反之亦然。

服务器的最大障碍是在相当普通的服务器上同时保持如此多的套接字打开。大多数时候,套接字将处于空闲状态,因为人们不会使用该应用程序。我只是一个人,我不想在服务器成本上花一大笔钱,所以我想我会选择nodejs,因为它能够以低内存使用率保持大量websocket打开(通常我会使用 Java,但我想内存很快就会成为一个问题)。

我无法集中注意力的问题是处理 Nodejs 和集群 api。 由于集群 api 生成了一个单独的 nodejs 进程,我将如何在 fork 进程之间共享 websocket 连接?如果我做不到这一点,我就必须以某种方式保证移动 Websocket 在与桌面客户端 Websocket 打开的同一 Node 进程上打开。不确定我也能做到。

我有什么选择?

最佳答案

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

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

如果这看起来有点复杂,可以使用一些模块为套接字引用创建“存储”并使它们在所有集群实例中可用

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

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

关于node.js - 在 Nodejs fork 进程之间共享数千个开放的 WebSocket,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28129377/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com