УДК 004
Технические науки
Прокин А. А., преподаватель факультета довузовской подготовки и среднего профессионального образования, ФГБОУ ВО «Мордовский государственный университет им. H.П. Огарёва», г. Саранск Рузманов А. А., студент факультета довузовской подготовки и среднего профессионального образования, ФГБОУ ВО «Мордовский государственный университет им. H.П. Огарёва», г. Саранск E-mail: aaprokin90@yandex. ru
ИСПОЛЬЗОВАНИЕ ВЕБ-СОКЕТОВ В ИНТЕРНЕТ ПРИЛОЖЕНИЯХ
Аннотация: При разработке многопользовательских веб-приложений разработчики сталкиваются с рядом проблем, среди которых можно выделить нагрузку на сервер и оптимизацию работы приложения. Данные проблемы призван решить протокол, работающий поверх TCP соединения - websocket. Позволяющий оптимизировать передачу данных и снизить нагрузку на сервер за счет поддержания открытого соединения между клиентом и сервером.
Ключевые слова: веб-сокет, асинхронность, протокол, соединение, оптимизация.
Abstract: When developing multi-user web applications, developers are faced with a number of problems, among which are the load on the server and the optimization of the application. These problems are designed to solve the Protocol running on top of TCP connection - web socket. Allows you to optimize data transfer and reduce the load on the server by maintaining an open connection between the client and the server.
Keywords: web socket, asynchronous, protocol, connection, optimization.
Развитие интернет индустрии не стоит на месте. Каждый день создаются тысячи новых проектов. Большинство из них является отчасти уникальным, если обращать внимание на технологию создания. И все больше проектов стали строиться с помощью системы реального времени. Под системой реального времени понимается характеристика, которая может быть измерена реальными физическими часами, в отличие от логического времени, определяющего лишь качественную характеристику, выражаемую относительным порядком следования событий. Для реализации данной системы был разработан веб-сокет.
Веб-сокет (Web Socket) - это протокол, который создает интерактивное соединение между клиентом и сервером для обмена данными в режиме реального времени [1]. В отличии от HTTP протокола, который построен на модели «запрос - ответ» веб-сокеты позволяют установить соединение между клиентом и сервером, и сохранять его пока это необходимо. Что позволяет значительно ускорить обмен данными между пользователями и сервером. С появлением AJAX в 2005 году все больше людей начали работать над созданием двунаправленных соединений.
Протокол web socket основан на работе протокола TCP что способствует созданию приложений реального времени. Приложение реального времени позволяет пользователям получать или отправлять информацию сразу же после публикации, без необходимости периодического опроса источника информации. Таким образом, приложение дает пользователям ощущение того, что действия происходят в данный момент, без малейших задержек. Это в большей части осуществляется за счет асинхронных запросов с клиента на сервер и с сервера на клиент (рисунок 1).
Асинхронность в наше время является очень популярной темой. Начиная от довольно нового языка программирования Go, заканчивая различными JS фреймворками [3; 6]. Асинхронное программирование обычно используют при написании серверной части приложения для сетевого взаимодействия. Но бывают и элементы пользовательского интерфейса, завязанные на
асинхронности. В частности, отличным решением использования веб-сокета является реализация чата, массивных многопользовательских игр или инструмента для пирингового взаимодействия.
Рисунок 1 - Визуализация клиент-серверного взаимодействия.
Хотелось бы отметить, что веб-сокеты поддерживаются большинством браузеров без использования сторонних плагинов и приложений, поэтому внедрение данной технологии не потребует значительных изменений и дополнительных программных ресурсов.
Взаимодействие клиента с сервером приложения веб-сокет проходит в несколько этапов [2; 4]:
а) Установка соединения или рукопожатие (handshake).
б) Создание обработчиков событий: onopen (соединение создано), onclose (соединение закрыто), onmessage (пришло сообщение от сервера), onerror (ошибка при работе веб-сокетов).
в) Отправка сообщений (фреймов) на сервер.
Тем самым позволяя общаться клиенту с сервером асинхронно в режиме реального времени. Благодаря такой связке клиента и сервера снижается нагрузка на сервер и ускоряется передача данных. Так как веб-сокет основан на клиент-серверном соединении, то для реализации данного протокола требуется внедрение кода как на стороне сервера, так и на клиенте приложения.
Теперь, когда мы разобрались что такое веб-сокеты и асинхронные запросы можно поговорить о том, с помощью чего их можно реализовать. Возможность работы с веб-сокетами реализована во многих языках программирования, но полноценно эта технология раскрывается в Node.js.
Node.js - это серверная платформа, работающая на движке V8 (транслирующем JavaScript в машинный код), превращающая JavaScript из узкоспециализированного языка в язык общего назначения. Node.js добавляет возможность JavaScript взаимодействовать с устройствами ввода-вывода через свой API написанный на C++, подключать другие внешние библиотеки, написанные на разных языках, обеспечивая вызовы к ним из JavaScript-кода. Собственно говоря, платформа Node.js и была разработана для решения задачи быстрого и удобного взаимодействия клиента c сервером.
Главным плюсом Node.js по сравнению с другими платформами является то, что в ней уже изначально можно использовать методы асинхронного программирования, тем самым делая связку с веб-сокетом еще более результативной.
Подводя итоги получаем достаточно существенные плюсы при использовании веб-сокетов [1; 5]:
а) высокая динамичность интерфейса и данных из-за обновления в режиме реального времени;
б) отсутствие необходимости в кэшировании;
в) экономия трафика из-за передачи только изменений;
г) значительный спад сетевой и серверной нагрузки;
д) наличие событийно-ориентированной схемы дает возможность отслеживать изменения данных в реальном времени. И в целом говоря о веб-
сокетах можно отметить, что технология достаточно привлекательная и удобная. Все больше разработчиков начинают использовать данную технологию в своих проектах.
Библиографический список:
1. Веб-сокеты: боевое применение. [Электронный ресурс]. -URL:https://habr.com/post/162301/ (Дата обращения 01.04.2019).
2. Асинхронность: назад в будущее. [Электронный ресурс]. -ЦКЬ:https://habr.com/post/201826/ (Дата обращения 01.04.2019).
3. Веб-сокеты в каждый дом. [Электронный ресурс]. -URL:https://hharek.m/веб-сокеты-в-каждый-дом (Дата обращения 01.04.2019).
4. Прокин А. А. Современное состояние и основные проблемы интернет-торговли в российской федерации / А. А. Прокин, В. А. Богатырская, Е. С. Сергушина, И. С. Листратов // Е-Бсю. - Саранск, 2018 - № 3 (18). - С. 36-41.
5. Прокин А. А. Создание и актуальные проблемы продвижения "трансрегионавтоматика ") / А.А. Прокин, В. А. Богатырская, Е. С. Сергушина, Е. В. Кренделев // Е-Бсю. - 2018 - № 4 (19). - С. 263-268.
6. Прокин А. А. Основы разработки эффективного веб-сайта / А. А. Прокин, В. А. Богатырская, Е. С. Сергушина, В. Ю. Клипиков // Е-Бсю. -Саранск, 2018 - № 3 (18). - С. 12-17.