Member 13702159 Ответов: 1

Web socket - обработка заказов req / resp


I am sending a lot of requests to the webSocket server in a short time. Can I be sure that webSocket process the requests and respones in this order: reqA, reqB, reqC then the server responses to these requests in the same order resA, resB, resC ?


Что я уже пробовал:

I am sending a lot of requests to the webSocket server in a short time. Can I be sure that webSocket process the requests and respones in this order: reqA, reqB, reqC then the server responses to these requests in the same order resA, resB, resC ?

0x01AA

нет

Member 13702159

0x01AA - не могли бы вы подробнее остановиться на этом ?

0x01AA

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

Member 13702159

Что вы об этом думаете?
https://stackoverflow.com/questions/14287224/processing-websockets-messages-in-order-of-receiving/31894114

Кто-то написал здесь: "WebSocket-это TCP, а это значит, что заказ доставки гарантирован"

0x01AA

TCPIP действительно сообщает вам, была ли информация успешно отправлена получателю (запрос). Но это не имеет ничего общего с ответом, который вы исключаете для запроса, который вы отправляете.

Значит, вы можете отправить несколько успешных запросов, но у вас нет гарантии, что 1.) получите ответ и 2.) порядок поступления ответов

Единственное, что вы можете сделать, это сериализовать его:

Петля
1.) отправить запрос
2.) Ждите ответа

Или, если вы программируете обе стороны (клиент и сервер), помечайте свои запросы тегами

MadMyche

"Гарантированный" порядок-это фрагменты в одном запросе, а не порядок получения сообщений. Или обрабатывается

0x01AA

Коротко и ясно +5 ;)

1 Ответов

Рейтинг:
2

Greg Utas

TCP сохраняет порядок и не имеет понятия "сообщение". Сообщение может быть разбито на части, но части прибудут по порядку. В течение времени, пока поддерживается TCP-соединение, порядок всех "сообщений" будет гарантирован, но это до конечных точек, чтобы найти границы сообщения, разделив или объединив то, что получено на сокете. Многие системы отключают TCP-соединение, которое остается бездействующим, и в этом случае для предотвращения этого необходимо использовать опцию "keepalive".

Это не относится к UDP, который может потерять или переупорядочить пакеты, но который сохранит границы сообщения (отдельного пакета).