2013-12-04 2 views
4

У меня проблема с моими сокетами, где мой код на стороне сервера выполняется до завершения моего socket.emit. Вот отрывок:socket.io + использование 'emit' с обратным вызовом?

Так что мне нужно, чтобы произошло это код, который запускается на выполнение на клиенте через socket.emit('GPS', ...) полностью закончить до toolbox.drawPaths происходит. Я пытался бросить обратный вызов на emit, как и вы, socket.on(..., function(){...}), но это, похоже, не является частью API. Какие-либо предложения?

ответ

4

Одна вещь, которую вы, возможно, захотите сделать, это создать событие на сервере, которое будет излучаться, когда ваш GPS будет завершен.

Например:

сервера

socket.on ('GPS', function (data) { 
    // Do work 

    // Done doing work 
    socket.emit ('messageSuccess', data); 
}); 

Client

socket.emit('GPS', {gpsResults: data, thresholds: th, PEMSID: PEMSID, count: count}); 
socket.on ('messageSuccess', function (data) { 
    //do stuff here 
    toolbox.drawPaths(function(ta){ 
    console.log(ta); 
    }); 
}); 
+0

Да, это то, что я смотрел на делать сейчас, по какой-то причине массив на клиенте сторона все равно пуста, когда этого не должно быть. – gjw80

+0

Я не знаю указанный контекст массива, о котором вы говорите, но я бы удостоверился, что он создан изначально и существует до его отправки – Xinzz

+1

Итак, означает ли это, что обратные вызовы не поддерживаются в функции испускания в Socket .io? – Sobiaholic

Смежные вопросы