nOp*_*nOp 2 websocket node.js socket.io
我发现了另外 3 篇关于为回合制游戏实现计时器的帖子,但没有一个有最终答案。
我正在使用 WebSockets (Socket.io) 房间进行扑克游戏项目。
每个房间都有一个计时器来处理服务器的轮次,例如,每个玩家有 10 秒的时间来选择一张卡片。如果只有一个房间,我可以通过使用 setInterval 并在每个间隔结束时更改转弯变量并将新转弯发送给客户端来做到这一点。
但是现在,考虑到 node.js 是单线程的,当有很多房间时,我很困惑如何为每个房间实现特定的计时器。
尽管是单线程,但 Node.js 可以同时管理多个计时器。你可以设置它们。你怎么做取决于你。请记住,bind如果您Room使用对象管理s,则需要使用。您可以使用变量来管理(例如,取消)您的计时器。
这是一个通用示例:
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();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1499 次 |
| 最近记录: |