Баннер мобильный (1) Пройти тест

WebSocket

Глоссарий

12 сентября 2023

Поделиться

Скопировано

Содержание

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

    Первая версия протокола появилась в 2009 году. Уже в 2011 году он получил статус RFC (Request for Comments, рабочее предложение), то есть был признан как стандарт, широко применяемый во Всемирной паутине. Сегодня технология поддержки веб-сокетов используется во всех мобильных, десктопных и серверных устройствах.

    WSS (WebSockets Secure) — это протокол для обмена данными между веб-сервером и веб-браузером с использованием безопасного соединения, обычно через порт 443 (который также используется для HTTPS). WSS предоставляет безопасное и надежное соединение для двусторонней связи между клиентом и сервером в реальном времени, что делает его полезным для различных веб-приложений, таких как чаты, онлайн-игры и многие другие.

    Как работают HTTP и AJAX

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

    Ситуацию улучшила технология AJAX — теперь клиент стал сам отправлять на сервер уточняющие HTTP-запросы в фоновом режиме.

    схема работы WebSocket
    Схема взаимодействия клиента с сервером до WebSocket

    Такой подход имел недостатки:

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

    Чтобы устранить эти недостатки, была разработана модель Comet, в которой уже вводилось постоянное соединение. Однако ее варианты содержали много ошибок и недоработок. 

    Как работают веб-сокеты

    Протокол WebSocket позволил сделать соединение двунаправленным и постоянным. Сервер может не только отвечать на запрос клиента, но и самостоятельно передавать новую информацию по мере ее поступления. Обмен данными происходит в рамках одного установленного соединения в режиме реального времени. Такой метод называется «открывающим рукопожатием». Клиенту нужно только прослушивать однажды открытый канал до получения ответа от сервера. 

    Как работают веб-сокеты
    WebSocket создает двунаправленное постоянное соединение по методу «открывающего рукопожатия».

    В общем виде механизм веб-сокета работает так:

    1. Веб-страница или приложение создает скрипт с тремя коллбэками (функциями обратного вызова): первый и третий сообщают об установке и закрытии соединения, а второй срабатывает каждый раз, когда клиент получает новые данные от сервера.
    2. Клиент подключается к серверу по протоколу TCP и подает запрос:

      GET /demo HTTP/1.1
      Upgrade: WebSocket
      Connection: Upgrade
      Host: site.com
      Origin: http://site.com

    3. Сервер с поддержкой веб-сокетов отвечает:

      HTTP/1.1 101 Web Socket Protocol Handshake
      Upgrade: WebSocket
      Connection: Upgrade
      WebSocket-Origin: http://site.com
      WebSocket-Location: ws://site.com/demo

    4. Клиент оставляет соединение открытым — канал готов. Далее при любом обмене информацией между ним и сервером будет срабатывать второй коллбэк скрипта, установленного страницей или веб-приложением.

    Веб-сокеты позволяют обмениваться текстовыми сообщениями, изображениями, аудио- и видеофайлами, потоковыми данными. Для передачи зашифрованных сообщений используется надстройка над протоколом WSS.

    Где применяются веб-сокеты

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

    • бирж, торговых площадок и других коммерческих сервисов с быстро меняющимися котировками, ценами и другими данными;
    • онлайн-игр, особенно многопользовательских;
    • онлайн-чатов, включая службы клиентской поддержки;
    • информационных сайтов с функцией комментирования контента;
    • push-уведомлений;
    • социальных сетей и блогов;
    • интернета вещей.

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

    Преимущества и недостатки

    Преимущества:

    • стандартизация решений, которая делает проще разработку кроссплатформенных приложений;
    • неограниченное время жизни соединения, его не нужно периодически обновлять;
    • множество одновременно открытых сессий;
    • быстрая передача динамически обновляемых данных без лишней нагрузки на сеть и сервер.

    Недостатки:

    • повышенные требования к серверному оборудованию;
    • отвал соединения без уведомлений. Чтобы понять, отвечает ли клиент, иногда нужно вводить дополнительные механизмы общения между ним и сервером;
    • смена сети клиентом. Если при переподключении к другой сети клиент не закрыл соединение, сервер не получит информации об изменении адреса.

    WebSocket — удобная технология передачи динамично обновляемых данных. Ее внедрение позволяет снизить нагрузку на сеть и серверное оборудование, ускорить работу сайта.  

    Другие термины на «W»

    Все термины

    Поделиться

    Скопировано

    0 комментариев

    Комментарии