Node.js集群将连接传递给特定工作者

时间:2016-09-01 01:09:43

标签: node.js multithreading socket.io

我有基于socket.io库的多人游戏,我想在多个线程上扩展它。我了解到node.js有集群模块来处理多线程。 我的游戏世界由多个区域组成,我希望每个区域都可以在其自己的进程中处理。我需要一种方法将用户的套接字传递给特定的工作者,因此用户可以从一个区域移动到另一个区域。 我在node.js文档中读到群集模块使用循环方法为每个连接选择worker。也许有任何解决方法来操纵连接?

1 个答案:

答案 0 :(得分:1)

我不完全确定群集是适合您的解决方案。集群的主要优点是它可以自动平衡不同进程之间的传入连接。但是,您不想使用该功能 - 您希望手动将每个连接分配给处理给定区域的进程。

因此,我认为您应该只启动所需的进程数,为每个进程分配一个特定于该区域的端口,然后让客户端向主服务器发送Ajax请求,询问什么port应该为其区域执行socket.io连接。客户端获取该ajax响应,然后直接连接到其区域的相应服务器。所有socket.io服务器都需要允许来自所需主页域/端口的跨源请求。

如上所述,可以通过端口连接到区域服务器,也可以通过单独的主机名(例如zone1.mygameserver.com)完成,然后使用nginx之类的东西将所有不同的主机路由到特定端口在你的服务器盒上。