VМеждународная научно-практическая конференция
ГНУ ВНИИТТИ. - № 2006106854/12; заявл. 06.03.2006; опубл. 27.11.2007, Бюл. №33. - 4 с.: ил.
УДК 004
Киселев Алексей Алексеевич Kiselev Alexey Alexeevich
студент, Ярославский государственный университет им. П. Г. Демидова, Россия, г. Ярославль student, P. G. Demidov Yaroslavl State University Russia, Yaroslavl
СРАВНЕНИЕ ТЕХНОЛОГИЙ WEBSOCKET И SOCKET.IO COMPARISON OF WEBSOCKET AND SOCKET.IO TECHNOLOGIES
Аннотация: В данной статье предоставляется сравнение технологий WebSocket и Socket.IO в рамках реализации приложения реального времени. В статье рассматриваются возможности данных технологий и особенности их использования в приложении реального времени.
Annotation: This article provides a comparison of Websocket and Socket.IO in case of realtime application implementation. The article discusses the possibilities of these technologies and the features of their use in a real-time application.
Ключевые слова: WebSocket , Socket.IO, приложение реального времени.
Keywords: WebSocket , Socket.IO, real-time application..
Приложения реального времени
Приложение реального времени - это приложение, которое реализует процесс непрерывного получения и отправки данных в определенный временной интервал.
Примеры приложений реального времени:
«Инновационные аспекты развития науки и техники» Мессенджеры (ВКонтакте, WhatsАpp, Telegram и т.д.)
Аналитика в режиме реального времени (Google Analytics, Azure Synapse
Analytics и т.д.)
Приложения для совместной работы (Google Docs, Microsoft Office Online, Dropbox Paper и т.д) Онлайн-игры
Для реализации приложений реального времени используются технологии, которые позволяют устанавливать двунаправленный канал связи между клиентской и серверной частями приложения. Наиболее популярными технологиями являются Websocket и Socket.IO.
Понятие протокола WebSocket WebSocket - протокол связи, предназначенный для обмена сообщениями между клиентом и сервером в режиме реального времени. Для установления соединения клиент и сервер обмениваются особыми HTTP-запросами. После ответа от сервера устанавливается TCP-соединение, с помощью которого клиент и сервер могут начать двунаправленный обмен сообщениями.
Понятие Socket.IO
Socket.IO - библиотека, реализующая событийно-ориентированное двунаправленное соединение между клиентом и сервером в реальном времени. Для начала обмена сообщениями клиент пытается установить WebSocket-соединение. Если WebSocket-соединение невозможно, то клиент будет использовать технологию AJAX Long Polling для получения сообщений с сервера.
Изначально библиотека была создана для реализации Socket.IO в браузерах с помощью JavaScript и серверах на Node.JS. В данный момент существуют библиотеки для различных языков (Java, C++, Python, Dart и т.д.)
Преимущества использования Websocket Для установки соединения с помощью веб-сокетов достаточно отправки двух запросов:
GET запрос на получения HTML-страницы;
VМеждународная научно-практическая конференция
UPGRADE запрос для установки связи с помощью веб-сокетов.
Размер запросов будет исчисляться лишь размером HTML-страницы, а время установки соединения с локальным сервером будет меньше 5 миллисекунд.
Для установки соединения с помощью Socket.IO будет отпралено гораздо больше запросов:
GET запрос на получения HTML-страницы;
GET запрос на получение библиотеки Socket.IO.js;
3 AJAX Long Polling запроса;
UPGRADE запрос для установки связи с помощью веб-сокетов.
Размер библиотеки Socket.IO.js равен 72.2 килобайт, а время установки WebSocket-соединения с помощью Socket.IO будет равно 120 миллисекундам.
Преимущества использования Socket.IO
При работе с WebSocket может возникнуть проблема с проксированием и балансировкой нагрузки. Socket.IO содержит в себе готовые механизмы обработки с помощью специальных данных, помещенных в cookie;
Как отмечалось ранее, Socket.IO поддерживает постепенную деградацию (т.е. использование технологий для установления соединения по мере невозможности использования наиболее приоритетной технологии). Например, при невозможности установления WebSocket-соединения будет установлено соединение с помощью AJAX Long Polling;
Socket.IO поддерживает автоматическое переподключение при разрыве соединения;
Socket.IO позволяет отправлять сообщения всем подключенным клиентам. Для реализации данной задачи с помощью веб-сокетов будет необходимо самостоятельно реализовывать отправку сообщений каждому пользователю отдельно.
Реализация функционала "комнат" в Socket.IO
В WebSocket отсутсвует возможность отправки сообщений определенному кругу пользователей. Для решения данной задачи необходимо хранить список
«Инновационные аспекты развития науки и техники» пользователей, а также реализовать механизмы обновления этого списка и отправки сообщений.
В Socket.IO для отправки сообщений определенному кругу подключенных пользователей реализована система комнат. Комнаты - это произвольные каналы, к которым пользователи могут быть подключены на стороне сервера. Функции создания комнат и отправки сообщений реализованы внутри самой библиотеки в Socket.IO.
В целях безопасности пользователи не имеют доступ к списку комнат, к которым они были подключены. В случае необходимости можно передать данные о комнатах пользователю вручную.
Библиографический список:
1. Официальный сайт библиотеки Socket.IO [Электронный ресурс] -https://socket.io/
2. Стандарт протокола WebSocket, RFC 6455 [Электронный ресурс] -https://tools.ietf.org/html/rfc6455
3. WebSocket API Specification [Электронный ресурс] -https://www.w3.org/TR/websockets/