我正在使用节点和套接字创建游戏。如何创建统一的倒计时用户倒数计时器,当用户刷新浏览器时不会重置。每60秒用户就会在60秒后出价,我应该得到所有的赢家。我在服务器端倒数计时器上真的很难过。
我使用了这段代码:
var countdown = 60;
setInterval(function() {
countdown--;
io.sockets.emit('timer', { countdown: countdown });
}, 1000);
但每次用户从头开始连接定时器
答案 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或会话。