使用Socket.io的不同房间的不同定时器

我发现了其他3个关于执行回合制游戏的定时器的post,但没有一个人有最终答案。

我正在使用WebSockets(Socket.io)房间进行扑克游戏项目。

每个房间都有一个定时器,负责服务器的转动,例如,每个玩家有10秒的时间来select一张卡。 如果只有一个房间,我可以通过使用setInterval并在每个时间间隔结束时更改转向variables来完成此操作,并向客户端发送新的转向。

但是现在,我觉得在考虑到node.js是单线程的时候,如果有很多房间的话,如何为每个房间实现一个特定的定时器。

尽pipe是单线程的,Node.js可以同时pipe理多个定时器。 你可以设置它们。 你怎么做取决于你。 请记住,如果您使用对象来pipe理Room则需要使用bind 。 您可以使用variables来pipe理(例如,取消)您的定时器。

这里是一个一般的例子:

 var Room = function() { this.id = String(Date.now()); this.timer = setInterval(this.timerFunction.bind(this), 10000); } Room.prototype.timerFunction = function() { // Example io.to(this.id).emit("some message"); } // Create one new Room();