【发布时间】:2018-09-21 11:29:07
【问题描述】:
在开发环境中,我有一个 nodejs 进程,它让 socket.io 在给定端口上侦听。客户端连接后,需要维护一个状态。 nodejs 脚本对文件进行一些处理,并通过套接字发送处理状态。这就像一个可能永远不会结束的批次。
如果客户端关闭浏览器然后再次打开(在开发环境中),网页只是再次连接到套接字并获取进程的当前状态,该进程将在后台处理文件处理特定用户。
为了让每个用户拥有一个进程并确保用户始终重新连接到他们在同一个端口上启动的同一个进程,我需要管理这些进程,每个用户一个作为服务器上的服务并预订每个用户的端口。
我将如何将此场景构建为单个 nodejs 入口点,该入口点可能会使用 Nginx、PM2 和/或 Nodejs 集群来分叉进程并相应地路由套接字连接。换句话说,在这样的场景中,哪种架构最适合生产?
关于状态问题:
我持有的状态不仅仅是变量,它可以存储在数据库中。我有连续的文件读取流,这些流按照用户通过使用套接字连接到该进程的网页配置的顺序依次处理。此过程还连接到另一个套接字服务器到服务器,并且必须保持连接。
【问题讨论】: