170 похожих чатов

Вопрос такой, не нашел в интернете почему то. Если у

нас есть клиент и сервер на вебсокетах, у нас есть гарантия что сообщения придут в том же порядке, что и запросы? Например клиент отправляет one two, сервер получает one и в ответ отправляет ones, получает two и в ответ отправляет twos. Не будет же ситуации когда клиет получит сначала twos, а потом ones?

13 ответов

25 просмотров

вебсокеты это не совсем нодежс. Это надстройка над хттп. И по идее ответ придет в том порядке в каком его отправит сервер. Если на обработку one требуется минута (сложный запрос в базу данных, потом обработка на десяти микросервисах) а на обработку two секунда - то как бы не очень логично держать twos до отправки ones, если этого не требует бизнеслогика. В рамках js стоит взгянуть на то как работает event loop. Можно устроить так что отправка twos будет заблокирована до отправки ones со стороны сервера. Или же не обрабатывать twos до ones на стороне клиента

Может не в тему, но в тех же rpc протоколах поверх вебсокетов каждому сообщению "запрос" прибавляется айдишник, по которому можно сопоставмть ответ, который прийдет с тем же айди

вебсокеты постороены поверх tcp, а tcp гарантирует порядок Кратко говоря не будет такой ситуации

Вебсокеты - надстройка над хттп. Ты хочешь сказать что у тебя ответы на геты приходят исключительно в порядке отправки?

а хттп надстройка над tcp

Об том и речь

https://tools.ietf.org/html/rfc6455

Назар-Калитюк Автор вопроса

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

Да тут не поспоришь но здесь не будет фрагментов меседжа а два разных меседжа

кейс редкий, но вполне возможный

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Ребят в СИ можно реализовать ООП?
Николай
33
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Карта сайта