Javascript ждет, пока Websocket выполнит команду "send"? - PullRequest
1 голос
/ 14 марта 2012

Я использую sockjs для работы с Websocket.

sock.send( JSON.stringify(obj1) );
sock.send( JSON.stringify(obj2) );
sock.send( JSON.stringify(obj3) );
...

Гарантируется ли, что команды «send» будут оцениваться одна за другой? (когда первый заканчивается, второй начинается и так далее)

Заранее спасибо!

Ответы [ 2 ]

2 голосов
/ 14 марта 2012

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

Подробнее о поведении Web Socket можно узнать в спецификации HTML5 .

0 голосов
/ 17 марта 2012

Если ваши вызовы отправки находятся в одном и том же контексте выполнения Javascript, то они обязательно будут выполнены по порядку.Кроме того, каждая отправка будет получена как целое сообщение обработчиком onmessage (т.е. он не будет фрагментирован).

Тот же контекст выполнения:

function doit () {
    ws.send("msg1");
    ws.send("msg2");
}

Другой контекст выполнения:

setTimeout(function () { ws.send("msg1"); }, 100);
setTimeout(function () { ws.send("msg2"); }, 110);

Во втором примере «msg2» не гарантированно будет доставлен после «msg1».Скорее всего, указанная задержка немного больше, но не гарантируется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...