我正在试图弄清楚这对于node.js子进程是否是一个不错的用例:
我有一个多人游戏,人们参与1v1比赛。我应该为每场比赛使用子进程吗?
答案 0 :(得分:5)
不是真的需要。由于节点是基于事件的,并且单个进程将能够处理数千个这样的玩家对。假设您正在使用now.js,您将为每个这样的对创建“房间”/“群组”/“渠道”。命名法可能会根据您使用的库而有所不同,但总体方法是相同的 - 将所有将要在相同“频道”中相互比赛的玩家分配。如果你实际上为每个这样的玩家对使用子进程,那么你实际上就是在扼杀构建node.js的目的。
另一方面,产生子进程的现实世界用例在forever.js(以及cluster.js)中实现。这里有一个子进程(也称为worker)由master进程生成。工作进程执行实际工作,比如处理HTTP请求,而主进程只监视工作进程并在现有进程死亡时产生新的工作进程(由于各种原因)。子进程也用于调用非nodejs应用程序。
答案 1 :(得分:2)
关于Node.JS的一个很酷的事情是你可以在一个线程中创建几乎所有逻辑,并且通过一些非常酷的内核功能,Node知道何时可以处理新的套接字信息。
Node正在试图逃跑的一件事是每个连接一个线程的模型。看看this。节点适用于I / O绑定应用程序,因此如果您的游戏需要太多处理,例如计算物理对象,Node可能不适合您。