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

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

1. Один из клиентов сервера делает запрос на создание поста в соц. сети.
2. Сервер сохраняет его.&#x20;
3. Другой клиент, который хочет увидеть посты пользователя, сможет их увидеть только после того, как самостоятельно сделает запрос на сервер для извлечения актуальных данных (перезагрузить страницу, откроет страницу в новой вкладке и т. Д.)&#x20;

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

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

1. Один из клиентов сервера делает запрос на создание поста в соц. сети.
2. Сервер сохраняет его.
3. Так как другой клиент заинтересован в прочтении поста, созданного выше, и на данный момент подключен к серверу через веб-сокет, то сервер отправляет новосозданный пост клиенту сразу же после его создания.&#x20;
4. При желании, любая из сторон (сервер или клиент) может закрыть вебсокет соединения.&#x20;

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