【问题标题】:Multiplayer Countdown Timer多人倒数计时器
【发布时间】:2013-11-12 03:20:15
【问题描述】:

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

我使用了这个代码:

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

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

【问题讨论】:

  • 如果它在节点中,为什么它也被标记为php?
  • 贴出你试过的相关代码,方便大家帮助。
  • 我使用了这个代码..var countdown = 60; setInterval(function() { countdown--; io.sockets.emit('timer', { countdown: countdown }); }, 1000);但是每次用户连接它都会重新启动计时器以启动
  • 您没有发布该代码的在哪里。没有它,我们无法告诉你它为什么会重置。

标签: javascript node.js socket.io


【解决方案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
});

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

【讨论】:

    【解决方案2】:

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

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

    使用 cookie 或会话。

    【讨论】:

    • 但是多用户呢?当有新用户连接时,时间会重置吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-26
    • 2011-12-19
    • 2015-08-19
    相关资源
    最近更新 更多