我正在开发一个游戏,我需要将计时器的每时每刻发送给套接字房间中的用户。如果我的计时器是30秒,我想在30秒钟内从客户端之一回复。我无法定义全局变量来停止计时器,因为服务器端可能正在运行多个游戏。我想检查服务器是否获得响应在那30秒内
socket.on('decidedturn_ack', function (game_id) {
socket.join("room-"+game_id);
var timeLeft = 30;
var timerId = setInterval(countdown, 1000);
function countdown() {
if (timeLeft == 0) {
clearTimeout(timerId);
io.sockets.in("room-"+game_id).emit('time_up',arr);
} else {
io.sockets.in("room-"+game_id).emit('timeLeft',timeLeft);
timeLeft--;
}
}
});
答案 0 :(得分:0)
由于不是全局变量,因此可以将计时器存储在每个连接的套接字唯一的套接字对象上。
var timeLeft = 30;
var timerId = setInterval(countdown, 1000);
socket.timerId = timerId; // assign the timer to the socket for use later..
收到回复后,请执行以下操作:
socket.on('decidedturn_response', function (game_id) {
clearTimeout(socket.timerId); // clears the timer on response
});