Как происходит обмен данными по вебсокет протоколу?

Для начала, давайте рассмотрим один из возможных сценариев работы http-протокола:

  1. Один из клиентов сервера делает запрос на создание поста в соц. сети.

  2. Сервер сохраняет его.

  3. Другой клиент, который хочет увидеть посты пользователя, сможет их увидеть только после того, как самостоятельно сделает запрос на сервер для извлечения актуальных данных (перезагрузить страницу, откроет страницу в новой вкладке и т. Д.)

Тоесть сервер отсылает новые данные клиенту только если клиент самостоятельно отправит ему запрос. В рамках HTTP протокола (за исключением HTTP Push технологии) сервер не может отправить клиенту данные по своей инициативе.

Для того, чтобы сделать обмен данными в реальном времени возможным, клиент и сервер устанавливают непрерывное socket-соединение, по которому передают данные друг другу при любой необходимости. То есть, с помощью веб-сокетов, мы можем реализовать такой сценарий:

  1. Один из клиентов сервера делает запрос на создание поста в соц. сети.

  2. Сервер сохраняет его.

  3. Так как другой клиент заинтересован в прочтении поста, созданного выше, и на данный момент подключен к серверу через веб-сокет, то сервер отправляет новосозданный пост клиенту сразу же после его создания.

  4. При желании, любая из сторон (сервер или клиент) может закрыть вебсокет соединения.

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

Last updated