Прежде чем перейти к необходимости использования веб-сокетов, необходимо взглянуть на существующие методы, которые используются для двусторонней связи между сервером и клиентом. Они заключаются в следующем —
- голосование
- Длинный опрос
- Streaming
- Постбэк и AJAX
- HTML5
голосование
Опрос может быть определен как метод, который выполняет периодические запросы независимо от данных, которые существуют в передаче. Периодические запросы отправляются синхронно. Клиент периодически отправляет запрос на Сервер. Ответ сервера включает в себя доступные данные или некоторые предупреждения.
Длинный опрос
Длинный опрос, как следует из названия, включает в себя подобную технику, как опрос. Клиент и сервер поддерживают соединение активным, пока не будут получены некоторые данные или не истечет время ожидания. Если соединение потеряно по каким-либо причинам, клиент может начать заново и выполнить последовательный запрос.
Длинный опрос — не что иное, как улучшение производительности по сравнению с процессом опроса, но постоянные запросы могут замедлять процесс.
Streaming
Это считается лучшим вариантом для передачи данных в режиме реального времени. Сервер поддерживает соединение открытым и активным с клиентом до тех пор, пока не будут получены необходимые данные. В этом случае соединение считается открытым на неопределенный срок. Потоковая передача включает заголовки HTTP, которые увеличивают размер файла, увеличивая задержку. Это можно рассматривать как главный недостаток.
AJAX
AJAX основан на объекте Jmlascript XmlHttpRequest . Это сокращенная форма асинхронного JavaScript и XML. Объект XmlHttpRequest позволяет выполнять Javascript без перезагрузки всей веб-страницы. AJAX отправляет и получает только часть веб-страницы.
Фрагмент кода вызова AJAX с объектом XmlHttpRequest выглядит следующим образом:
var xhttp; if (window.XMLHttpRequest) { xhttp = new XMLHttpRequest(); } else { // code for IE6, IE5 xhttp = new ActiveXObject("Microsoft.XMLHTTP"); }
Основными недостатками AJAX по сравнению с веб-сокетами являются —
- Они отправляют заголовки HTTP, что увеличивает общий размер.
- Связь полудуплексная.
- Веб-сервер потребляет больше ресурсов.
HTML5
HTML5 — это надежная структура для разработки и проектирования веб-приложений. Основными компонентами являются API-интерфейсы разметки, CSS3 и Javascript .
Следующая диаграмма показывает компоненты HTML5 —
Приведенный ниже фрагмент кода описывает объявление HTML5 и его тип документа.
<!DOCTYPE html>
Зачем нам нужны веб-сокеты?
Интернет был задуман как набор страниц на языке гипертекстовой разметки (HTML), связывающих друг друга для формирования концептуальной паутины информации. С течением времени количество статических ресурсов, таких как изображения, увеличилось, и они стали частью веб-структуры.
Передовые серверные технологии, позволяющие создавать динамические серверные страницы — страницы, содержимое которых было сгенерировано на основе запроса.
Вскоре требование более динамичных веб-страниц привело к доступности языка динамической разметки гипертекста (DHTML). Все благодаря JavaScript. В последующие годы мы видели межкадровую связь в попытке избежать перезагрузок страниц, за которыми следовал HTTP-опрос внутри кадров.
Однако ни одно из этих решений не предлагало действительно стандартизированного кросс-браузерного решения для двунаправленной связи в режиме реального времени между сервером и клиентом.
Это привело к необходимости протокола веб-сокетов. Это дало начало полнодуплексной связи, обеспечивающей функциональность рабочего стола для всех веб-браузеров.