2016-12-27 1 views
0

Я использую функцию emit для вызова обратного отсчета в моем клиенте (приложение для Android), которое выглядит следующим образом.Обратный отсчет Socket.IO не работает должным образом

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

Возможно, вы захотите получить обратный вызов (в вашем случае уменьшить переменную счетчика), когда клиент подтвердил прием сообщения.

Для этого просто передайте функцию как последний параметр .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); 
Смежные вопросы