WebSockets: Быстрая связь в реальном времени

WebSocket — технология, обеспечивающая скорость и непрерывность современного интернета.

HTTP и необходимость WebSockets

При обращении к сайту (например, интернет-магазину обуви) браузер отправляет HTTP-запрос, запрашивая данные для отображения страницы. Сервер отвечает, отправляя запрошенные данные, после чего соединение закрывается. Для получения новой информации требуется новый запрос.

В чате на сайте криптотрейдеров, например, получение новых сообщений проблематично, поскольку сервер не инициирует общение. Постоянное обновление страницы — неэффективно.

HTTP Polling

Существует HTTP Polling с двумя вариантами: Short Polling и Long Polling.

  • Short Polling: Клиент периодически запрашивает у сервера новые данные («Есть что-нибудь новенькое?»). Сервер отвечает либо с новыми данными, либо с отрицательным ответом. Соединение закрывается после каждого ответа.
  • Long Polling: Клиент отправляет запрос и ждёт ответа от сервера с обновлениями или таймаута. Соединение закрывается после ответа, и требуется новый запрос.

Оба метода неэффективны. Необходимо постоянное открытое соединение для обмена данными.

WebSockets: двунаправленное соединение

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

Работа WebSockets

При подключении к сайту или приложению происходит «рукопожатие»: браузер (клиент) отправляет HTTP-запрос о желании подключиться к сокету и получает подтверждение. Затем устанавливается TCP-соединение, гарантирующее доставку сообщений.

Наблюдение за WebSockets

Для наблюдения за работой WebSockets откройте панель разработчика (F12), перейдите во вкладку Network, включите фильтр WS, выберите соединение и перейдите на вкладку Messages. Вы увидите обмен сообщениями между браузером (зеленые стрелки) и сервером (красные стрелки) без лишних запросов.

Применение Polling

WebSockets эффективны, но Polling до сих пор используется. Причины – в комментариях.

Что будем искать? Например,программа