Телефон: +7 (383)-202-16-86

Статья опубликована в рамках: Научного журнала «Студенческий» № 10(30)

Рубрика журнала: Информационные технологии

Скачать книгу(-и): скачать журнал часть 1, скачать журнал часть 2, скачать журнал часть 3, скачать журнал часть 4, скачать журнал часть 5, скачать журнал часть 6

Библиографическое описание:
Эсаулов Н.И. СРАВНИТЕЛЬНЫЙ АНАЛИЗ ТЕХНОЛОГИЙ ПОЛНОДУПЛЕКСНОГО СОЕДИНЕНИЯ МЕЖДУ КЛИЕНТОМ И СЕРВЕРОМ НА РАЗЛИЧНЫХ ЯЗЫКОВЫХ ПЛАТФОРМАХ // Студенческий: электрон. научн. журн. 2018. № 10(30). URL: https://sibac.info/journal/student/30/108434 (дата обращения: 15.08.2020).

СРАВНИТЕЛЬНЫЙ АНАЛИЗ ТЕХНОЛОГИЙ ПОЛНОДУПЛЕКСНОГО СОЕДИНЕНИЯ МЕЖДУ КЛИЕНТОМ И СЕРВЕРОМ НА РАЗЛИЧНЫХ ЯЗЫКОВЫХ ПЛАТФОРМАХ

Эсаулов Никита Игоревич

магистрант, кафедра КПиД, университет ИТМО,

РФ, г. Санкт-Петербург

Введение

Анализ современных тенденций использования протоколов полнодуплексного соединения между клиентом и сервером. Веб-приложения реального времени набирают всё большую популярность в современном мире, отзывчивость приложений растет, вместе с этим в сфере разработки появляются новые технологии и инструменты, отвечающие требованиям современных приложений. Перед разработчиками встает вопрос выбора необходимой технологии для реализации необходимого функционала приложения. На сегодняшний день самыми современными технологиями для обмена данных с использованием протокола HTTP являются WebSocket и Server-Sent Events, представленные в 2012 году.

Актуальность темы. На сегодняшний день мало кто может представить свою жизнь без приложений. Они значительно улучшают качество и удобство жизни человека. Приложения реального времени плотно вошли в наш быт - будь то мессенджеры, приложения для навигации по городу, онлайн-игры, приложения для совместной работы над документами в интернете. Технологии для обеспечения коммуникации устройств и серверов постоянно развиваются, что обуславливает актуальность данного исследования.

Постановка задач

  • Исследовать наиболее популярные технологии обмена данных в реальном времени.
  • Проанализировать популярность использования таких технологий и тенденции их развития.
  • Проанализировать тенденции развития и популярности этих технологий.
  • Изучить реальную статистику использования технологий обмена данных в реальном времени на примере нескольких современных приложений.

Объект исследования – технологии и протоколы обмена данных в вебе реального времени.

Предмет исследования – методы и алгоритмы передачи информации поверх протокола HTTP.

Основной целью работы будет исследование протокола WebSocket и других технологий в современной экосистеме веб-разработки.

Теоретическая и прикладная значимость

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

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

  1. Технология Server Push

Вторая версия протокола передачи данных HTTP предоставляет функционал Server Push. Данная технология позволяет оптимизировать работу и время загрузки веб-страниц. Доступ к веб-сайтам по протоколу HTTP всегда осуществляется по шаблону «Запрос – ответ»: клиент (браузер) отправляет запрос на удаленный сервер, который с некоторой задержкой присылает ответ с запрошенным контентом.

В первоначальном запросе к веб-серверу обычно запрашивается HTML-документ. Сервер отвечает запрошенным HTML-ресурсом. Полученный HTML-документ анализируется браузером, в результате чего из него извлекаются ссылки на другие ресурсы, такие как таблицы стилей, скрипты и изображения. После их обнаружения браузер отправляет отдельный запрос для каждого ресурса и получает соответствующие ответы [8].

 

Рисунок 1. Стандартный обмен данных в протоколе HTTP/1

 

Очевидным недостатком такого подхода является временная задержка между получением клиентом первоначального HTML-документа и остальных файлов, необходимых для корректного отображения веб-страницы. Технология HTTP/2 Server Push позволяет отправлять ресурсы клиенту до того, как тот явно их запросит [7]. Например, если для корректного отображения веб-страницы необходим внешний файл с таблицей стилей some-styles.css, веб-сервер может передать этот файл клиенту сразу после того, как он начал передавать изначальный HTML-документ.

 

Рисунок 2. Обмен данных с используя технологию Server Push протокола HTTP/2

 

2. Технология Multiplexing

HTTP/2 - это бинарный протокол. Каждому HTTP/2 запросу и ответу присваивается уникальный идентификатор, называемый “идентификатор стрима”, и каждый запрос и ответ разделяется на фреймы. Идентификатор стрима используется для определения, к какому запросу или ответу принадлежит фрейм. Стрим - это набор фреймов с одинаковым идентификатором.

Чтобы отправить запрос серверу, клиент разделяет запрос на бинарные фреймы и присваивает идентификатор стрима каждому фрейму. Затем клиент устанавливает TCP соединение с сервером, после чего начинает отправку фреймов. Сервер также отправляет ответ фреймами.

Возможность разбить HTTP запрос на независимые фреймы, расслоить их, и собрать воедино на другом конце - очень важное нововведение HTTP/2.

3. Технология Server-Sent Events

SSE - технология, позволяющая осуществлять передачу данных в формате text/event-stream с сервера на клиент в одностороннем порядке без дополнительных запросов от браузера и не закрывая соединение. Для получения таких событий на клиенте используется интерфейс EventSource [2]. Основная разница с методом Polling - последний создает новое соединение на каждый запрос. Server-Sent Events - события реального времени, в этом они схожи с протоколом WebSockets. Разница состоит в одностороннем порядке передачи данных, тогда как WebSockets позволяет отправлять данные с клиента на сервер. SSE имеет ряд преимуществ:

  • Если соединение прерывается, интерфейс EventSource “кидает” ошибку и автоматически пытается восстановить соединение. Также, сервер может контролировать время, после которого клиент попытается восстановить соединение [1].
  • Для передачи данных используется стандартный протокол HTTP.
  • Клиенты могут отправлять уникальный идентификатор с сообщениями. Когда клиент будет пытаться восстановить соединение, он будет знать идентификатор последнего сообщения [12]. Таким образом, сервер может вычислить, какие сообщения не были доставлены на клиент, и отправить их.

Простейший пример клиентского кода:

// подписка на события

    var source = new EventSource('http://somesite.com/events');

    // обработка сообщений

    source.onmessage = function(event) {

            event.data; };

Каждый объект EventSource имеет свойства:

  • URL - передается в конструктор класса
  • Request - запрос, изначально равен null
  • ReconnectionTime - время на восстановление соединения, мс
  • LastEventID - идентификатор последнего события
  • ReadyState - состояния соединения (connecting/open/closed)

У технологии SSE есть ряд известных недостатков. Так, например, не все современные браузеры ее поддерживают [4]. Также для Server-Sent Events отсутствует стандартный интерфейс для реализации передачи данных с приложениями на мобильных платформах, что приводит к неконсистентности кода между проектами и отсутствию единого подхода к разработке в сообществе. В сравнении с WebSocket, недостатком Server-Sent Events является ограниченность типа передаваемой информации, а именно возможность передачи только текста в кодировке UTF-8, тогда как по протоколу WebSocket возможна передача как текста любой кодировки, так и бинарных данных [11]. Также существенным недостатком SSE является ограниченное количество возможных одновременно открытых соединений между клиентом и сервером [5]. Это описано в самом протоколе [6]. Для обхода этого недостатка авторы советуют использовать сложный механизм, который подразумевает использование уникального домена для каждого соединения, или же использовать один экземпляр объекта соединения EventSource с помощью технологии “shared worker”.

Оценка трендов и тенденций WebSocket и SSE

Для того, чтобы оценить тренды использования приведенных выше технологий, был использован веб-сервис http://npm-stats.org. В качестве объекта исследования были взяты две самые популярные в сообществе библиотеки для языка JavaScript для Server-Sent Events и WebSocket. В первом случае это библиотека sse, во втором socket.io. В качестве временной рамки исследования был выбран период с 1 мая 2017 года по 1 мая 2018 года.

  1. SSE

 

Рисунок 3. Количество загрузок пакета SSE в неделю

 

Рисунок 4. Количество загрузок пакета SSE в месяц

 

2. Socket.IO

 

Рисунок 5. Количество загрузок пакета Socket.io в неделю

 

Рисунок 6. Количество загрузок пакета Socket.io в месяц

 

Как видно из графиков, количество загрузок пакета socket.io значительно превышает количество загрузок пакета sse. Так, например, за апрель 2018 года библиотека socket.io была установлена более семи миллионов раз, тогда как библиотека sse была установлена сто сорок тысяч раз. Также исходя из количества загрузок можно оценить текущую и дальнейшую тенденцию использования данных технологий. Обе библиотеки на апрель 2018 года находятся на пике количества загрузок, что говорит о том, что, скорее всего, популярность обеих технологий будет расти в дальнейшем.

Заключение

В ходе данной научно-исследовательской работы были достигнуты все поставленные цели и связанные задачи исследования.

Исследовательская часть работы показала, что на сегодняшний день далеко не все веб-приложения реального времени используют современные технологии обмена данных в режиме реального времени, что обуславливается новизной таких технологий. Большинство новых приложений создается с использованием вышеописанных инструментов, что ведет как к улучшению качества современных приложений, так и к развитию новейших технологий и сообщества разработчиков. Анализ производительности путем измерения временных задержек в передаче данных показал существенное преимущество современных технологий, в частности протокола WebSocket.

 

Список литературы:

  1. Discussing the choice of a push technology: SSE vs WebSockets [Электронный ресурс] // StreamData - Режим доступа: https://streamdata.io/blog/push-sse-vs-websockets/ (дата обращения: 23.03.2018).
  2. Using SSE Instead Of WebSockets For Unidirectional Data Flow Over HTTP/2 [Электронный ресурс] // Smashing Magazine - Режим доступа: https://www.smashingmagazine.com/2018/02/sse-websockets-data-flow-http2/ (дата обращения: 03.04.2018).
  3. Collina M., Vanelli-Coralli A., Caini C., Corazza G.E. Latency Analysis of Real-Time Web protocols over a Satellite Link //  University of Bologna, 2016. - p. 2-10.
  4. Can I Use [Электронный ресурс] // Режим доступа: http://caniuse.com/#search=eventsource (дата обращения: 01.04.2018).
  5. Chromium Bug Tracker [Электронный ресурс] // Google - Режим доступа: https://bugs.chromium.org/p/chromium/issues/detail?id=275955 (дата обращения: 01.04.2018).
  6. W3C [Электронный ресурс] // W3C - Режим доступа: http://www.w3.org/TR/2012/WD-eventsource-20120426/ (дата обращения: 02.04.2018).

Оставить комментарий

Форма обратной связи о взаимодействии с сайтом