Протокол передачи данных WebSocket

2 Сентября 2021

протокол websocket статьяПередача данных от приложения или браузера к серверам и в обратном направлении может выполняться разными способами, но по определенным правилам. И записаны они в соответствующих протоколах: HTTP, FTP, POP3, SMTP, Telnet и пр. Одни подходят для случаев, когда к скорости обмена информацией не предъявляются жесткие требования: как пример, сайты информационного назначения. Другие же стоит использовать для случаев, когда оперативность передачи данных является ключевым критерием, как для интернета вещей.

Сейчас познакомимся более подробно с одним из таких протоколов – WebSocket Api. Преимущественно он используется при разработке приложений, содержимое которых обновляется в режиме реального времени и высокой частотой. Определим его преимущества и недостатки, особенности работы.

Особенности протокола передачи данных WebSocket

До недавнего времени протокол HTTP был одним из наиболее востребованных на рынке. Сегодня в чистом виде он уже почти не применяется. Протокол используется одновременно с надстройкой, позволяющей шифровать данные – HTTPS. Но он так и остался однонаправленным. То есть после завершения цикла «запрос-ответ» связь автоматически прекращается. Да и сам процесс передачи информации идет с определенными задержками. Это связано с тем, что на установление соединения требуется время. А еще в результате постоянно возникающих новых запросов возрастает нагрузка на сеть. Решить эти проблемы и призван ВебСокет.

WebSocket – это протокол, обеспечивающий обмен информацией между интернет-браузером и сервером через постоянное соединение. Применяется при реализации сценария взаимодействия «клиент-сервис». В случае безопасного соединения начинается как ws:// или wss://. Сам протокол – двунаправленный, полнодуплексный. То есть может работать как в прямом, так и в обратном направлении. Он будет поддерживать активное соединение между пользователем и сервером до тех пор, пока одна из сторон по собственной инициативе не разорвет его. Чисто передаваемых запросов в рамках одной сессии – неограниченное. А это значит, что скорость соединения выше, чем у HTTPS.

Чтобы установить соединение по этому протоколу, требуется отправить HTTP-запрос. Процесс взаимодействия выполняется в следующей последовательности:

  1. Пользователь, который бы хоте установить соединение с сервером направляет ему соответствующий запрос, включающий ряд обязательных заголовков: headers.
  2. Сервер принимает его, обрабатывает и направляет в ответ сообщение: HTTP 101 Switching Protocols. Оно будет свидетельствовать о том, что запрос одобрен и идет подключение на протокол.
  3. Открывается Веб-Сокет-соединение, запускается процесс обмена данными.

У ВебСокета также есть надстройка, обеспечивающая шифровку передаваемых данных – WSS. Благодаря этому исключается вероятность несанкционированного доступа сторонних лиц к информации, загрузки вредоносных программ. При WSS информация кодируется еще у отправителя, а раскодируется получателем. Все это происходит в автоматическом режиме.

Аренда выделенного
сервера
Разместим оборудование
в собственном дата-центре
уровня TIER III.
Конфигуратор сервера
Подбор оборудования для решения Ваших задач и экономии бюджета IT

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

Как и другие подобные продукты, протокол WebSocket имеет свои преимущества и недостатки. Так, если говорить о его сильных сторонах, стоит выделить:

  • обеспечивает двусторонний обмен информацией, то есть одновременно и передает, и получает данные;
  • высокую скорость работ: сведения передаются гораздо быстрее, чем в случае HTTP;
  • поддержку кроссплатформенной совместимости: здесь не важно, кто будет пользователем – мобильное приложение, интернет-сайт и пр.;
  • низкие запросы к накладным расходам: если для работы HTTP требуется наличие 2000 байт, то WebSocket – только 2 байта, то есть в 1000 раз меньше;
  • соединение не будет прерываться даже в том случае, если интернет-связь пропадет на непродолжительное время: актуально для пользователей, у которых интернет-связь работает нестабильно;
  • возможность работать не в классической форме «запрос-ответ», а асинхронно: равноправные возможности в процессе обмена информацией будут и у пользователя, и у сервера, взаимодействие автономное.

Но наряду с существенными преимуществами, у протокола ВебСокет есть и свои недостатки. И один из наиболее весомых – повышенные требования к серверному оборудованию. Не каждый узел сможет поддерживать этот протокол. Многие клиенты среди недостатков отмечают и отсутствие обратной реакции. То есть отправив запрос в WebSocket нельзя понять, доставлен ли он или нет. И если в течение 75 секунд не будет получен ответ, значит, запрос не был передан и попытку стоит повторить. Еще одна особенность работы протокола – необходимость отключать самостоятельно соединение, если пользователь меняет сеть, к которой было подключено его устройство или он находится в пути. Сервер не сможет подключить клиента, так как будет ожидать поступления запросов от него со старого адреса.

Область применения WebSocket

На практике особая польза ВебСокета оказалась в повышении скорости работы сайт. Но применять этот протокол не рекомендуется, если необходимо получать неизменные или старые данные. Не стоит к нему прибегать и тем, кому надо только единожды загрузить информацию. Для реализации таких задач вполне будет достаточно возможностей HTTP или HTTPS.

Работа с соцсетямиWebSocket сервер идеально подойдет для работы с:

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

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

А что было «до»?

Чтобы понять, насколько полезными и удобными для решения многих задач могут быть Web сокеты надо знать, как работала вся эта система без них, то есть, что было «до».

Раньше, взаимодействие между браузером и сервером проходило по простой схеме: браузер отправлял запрос, а сервер давал на его ответ. То есть нет запроса – нет ответа. Сервер сам ничего не мог отправить. Как пример: пользователь получает сообщение или уведомление на сайте. Но он об этом не узнает до тех пор, пока браузер не отправить соответствующий запрос серверу. То есть делать все это надо было с определенной периодичностью. Только так можно было узнать, пришло ли какое-то сообщение или нет. Получается, что браузеру приходилось буквально каждые 5 секунд отправлять серверу запрос, чтобы получить информацию о новых уведомлениях в ответ. Но еще браузер мог узнать о наличии новых данных тогда, когда сам пользователь работал с сайтом: обновлял вкладки, переходил между страницами, повторно заходил на него и пр.

Как первый, так и второй вариант имели свои недостатки:

  1. На сеть возлагалась повышенная нагрузка, в своем большинстве «попусту». Браузер постоянно выполняет отправку запросов серверу, даже в случае отсутствия новой информации. Технология ВебСокет предполагает работу только «по делу», то есть нет никаких лишних запросов.
  2. Большие накладные расходы. Деньги тратятся на каждое новое соединение, то есть вопрос/ответ. Также тратится и время. В случае с WebSocket соединение остается открытым до тех пор, пока одна из сторон не разорвет его. Не надо создавать новые события, тратить время, деньги.
  3. Недостаточная частота обновления данных. Даже если на сервере появилась новая информация, пользователь не сможет сразу получить ее. Требуется предварительная отправка запроса. И если требуется получать данные максимально быстро, браузеру придется отправлять запросы с очень высокой частотой – 0,5 с и менее. Такая нагрузка нередко приводила к «падению» сервера. Использование WebSocket исключает такие проблемы.

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

Еще одно преимущество WebSocket – возможность структурировать сообщения, которые передаются. Протокол работает на стеке TCP/IP, использует метод «прямого рукопожатия». То есть объект отправляет предварительный запрос, в котором определяется использование веб-сокетов. Дальнейшая работа будет вестись уже в рамках этого соединения.

Остались вопросы о протоколе WebSocket? Нужна более детальная информация или настройка его работы? Обращайтесь за профессиональной помощью к специалистам компании «Xelent».

Популярные услуги
Получить консультацию специалиста
Персональный ассистент
Cloud.Xelent