0

创建一个独立于连接的客户端执行的节点程序(或子程序/循环)是否可能,甚至可行。

所以在我的特定用例中,我想制作一个多人游戏,每个回合都有一个玩家执行动作。并在该回合结束时计算这些动作。无论客户端/玩家连接如何,是否可以在特定时间执行这些计算?

我认为这涉及在某处使用线程。

可能更简单的解决方案是在观察结果时计算结果,但如果它对其他实体有影响,这可能会导致困难。但是这个问题一直是我的好奇心。

4

2 回答 2

0

如果每回合的计算不是很重,您可以使用简单的 setTimeout() 来解决问题

function turnCalculations(){
    //do loads of stuff every 30 seconds
}

setTimout(turnCalculations,30000)

//normal node server stuff here

无论用户是否连接,这将每 30 秒进行一次轮次计算,但如果计算时间过长,它们可能会阻塞您的服务器。

于 2013-11-08T19:28:45.833 回答
0

好吧,基本上,最简单的解决方案可能是将计算运行到集群上。这会产生一个线程,该线程正在运行独立任务并与主线程进行消息通信。

但是,如果您希望运行一个完全独立的进程(我可能不会,但这是一种选择),这也可能发生。然后,您只需要两个进程之间的通信协议。通常这将由消息传递或任务队列系统处理。解决此问题的流行队列是RabbitMQ

于 2013-11-08T19:20:37.070 回答