多人倒数计时器

时间:2013-11-12 03:20:15

标签: javascript node.js socket.io

我正在使用节点和套接字创建游戏。如何创建统一的倒计时用户倒数计时器,当用户刷新浏览器时不会重置。每60秒用户就会在60秒后出价,我应该得到所有的赢家。我在服务器端倒数计时器上真的很难过。

我使用了这段代码:

var countdown = 60;
setInterval(function() {
    countdown--;
    io.sockets.emit('timer', { countdown: countdown });
}, 1000);

但每次用户从头开始连接定时器

2 个答案:

答案 0 :(得分:1)

我发现了你的问题。如果您将 Interval 循环放在用户连接时触发的函数中,它将再次运行。但如果你把它放在连接事件之外,那么你会没事的。 喜欢而不是做

io.on("connection", function (sockets){
    var countdown = 60;
setInterval(function() {
countdown--;
io.sockets.emit('timer', { countdown: countdown });
 }, 1000);
});

你会这样做

var countdown = 60;
setInterval(function() {
countdown--;
io.emit('timer', { countdown: countdown });
 }, 1000);

//can come after or before timer function
io.on("connection", function(sockets){
//your code
});

这样做可以防止用户加入时刷新时间。

答案 1 :(得分:0)

您可以使用Cookie或会话来节省时间。这样,当用户刷新时,他们将不会重置计数。

Javascript每次都会重置计数,因为每一项都被视为新请求。

使用Cookie或会话。