3 мини-вопроса о подключениях через веб-сокет
Когда клиент отправляет данные на сервер, возникает задержка. Когда сервер отправляет данные клиенту, существует ли задержка или она мгновенная?
Если клиент отправляет данные на сервер ОЧЕНЬ БЫСТРО в определенной строке — скажем, [1, 2, 3], есть ли вероятность того, что из-за задержки или по другим причинам данные будут получены сервером в другой строке ? (например, [2, 1, 3])
(То же, что вопрос 2, но когда сервер отправляет данные)
Да, есть задержка. Это все еще соединение, и есть еще цепь для навигации. Задержка имеет значение только тогда, когда что-то меняется, и учитывая, что для сообщения клиенту требуется X времени, а клиенту — еще X мс, чтобы сделать что-либо с этим, вполне возможно, что состояние изменится в течение этих мс. Точно так же, как HTTP-запросы (WebSockets — примерно одно и то же) становятся «горячими», я считаю, что задержка уменьшится (при прочих равных условиях), но все равно будет существовать.
Нет, WebSockets через TCP, поэтому они будут в порядке. Транспортировка UDP запускается и забывается, она не отправляет никаких уведомлений о получении и не регенерирует пакеты, используя информацию о времени, поэтому вы можете отправлять сообщения быстрее, но не можете делать предположений относительно получения, заказа или событий. Показы страниц были бы отличным примером того, где вас на самом деле не волнует, в каком порядке и, возможно, вас не слишком волнует, когда сервер получает такое сообщение, WebRTC может устанавливать UDP-соединения между JS и сервером, но стандарт все еще находится на стадии разработки. На данный момент WebSockets подключаются через обновление HTTP, то есть они являются TCP, где информация о заказе и подтверждении получения важна (все больше и больше сообщений отправляется туда и обратно).
Тот же ответ! Все это происходит по TCP, поэтому вся поездка туда и обратно, но порядок гарантирован.
Других решений пока нет …