Socket.IO倒计时无法正常工作

时间:2016-12-27 16:56:43

标签: javascript node.js socket.io emit

我使用emit函数调用我的客户端(anroid应用程序)中的倒计时,看起来像这样。

var countdown = 3;
var countdownInterval = setInterval(function () {
    socket.emit('countdown', countdown); // to player
    socket.broadcast.to(opponent).emit('countdown', countdown); // to opponent

    if (countdown == 0) {
        clearInterval(countdownInterval);
    }

    countdown--;

}, 1000);

问题是,并非总是在同一时间开始。我的意思是在倒计时结束时,它会在我的应用上播放一首随机歌曲。但有时 一个在另一个之前开始。

我听说这取决于他们的延迟。我怎样才能解决这个问题?如果您也可以发送示例代码,那将非常有用。

1 个答案:

答案 0 :(得分:0)

当客户端确认收到消息时,您可能希望获得回调(在您的情况下减少计数器变量)。

要执行此操作,只需将函数作为.send.emit的最后一个参数传递。当您使用.emit时,确认由您完成,这意味着您也可以传递数据:

var countdown = 3;
var countdownInterval = setInterval(function () {
    socket.emit('countdown', countdown, function(){ 
      if (countdown == 0)  clearInterval(countdownInterval); 
      countdown--;
      socket.broadcast.to(opponent).emit('countdown', countdown); // to opponent   
    }); // to player


}, 1000);