1

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

我使用了这段代码:

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

但是每次用户连接计时器时都会从头开始

4

2 回答 2

1

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

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
});

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

于 2021-04-21T05:02:50.703 回答
0

您可以使用 cookie 或会话来保持时间。这样当用户刷新时,他们不会重置计数。

Javascript 每次都会重置计数,因为它们中的每一个都被视为一个新请求。

使用 cookie 或会话。

于 2013-11-12T03:59:11.947 回答