我使用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);
问题是,并非总是在同一时间开始。我的意思是在倒计时结束时,它会在我的应用上播放一首随机歌曲。但有时 一个在另一个之前开始。
我听说这取决于他们的延迟。我怎样才能解决这个问题?如果您也可以发送示例代码,那将非常有用。
答案 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);