Что такое Long-Polling, Websockets, Server-Sent Events (SSE) и Comet?

Опубликовано: 25 Декабря, 2021

Существуют различные способы взаимодействия клиентской стороны со стороной сервера в режиме реального времени, т. Е. Длительный опрос, веб-сокеты, отправленные сервером события (SSE) и Comet. Это объясняется следующим образом.

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

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

2. Веб-сокеты:
WebSocket - это протокол компьютерной связи, который позволяет нам использовать полнодуплексные каналы связи по единому протоколу управления передачей (TCP). Протокол WebSocket обеспечивает взаимодействие между веб-браузером и веб-сервером с небольшими накладными расходами, обеспечивая передачу данных в реальном времени с сервера и на сервер. Это делается путем определения стандартного способа для сервера отправлять информацию клиенту без предварительного запроса клиента, а затем позволяя передавать сообщения туда и обратно, сохраняя при этом соединение открытым. Таким образом, между клиентом и сервером может происходить двусторонний диалог без каких-либо проблем.

Веб-сокеты широко используются в веб-браузерах, таких как Google Chrome, Opera, Edge, Firefox, Safari и т.д. Он имеет сложную технику балансировки нагрузки и прокси. Он также поддерживает обнаружение сброшенного клиента, которое отсутствовало при длительном опросе, но также не обеспечивает обработку повторного подключения.

3. События, отправленные сервером (SSE):
Это технология, позволяющая браузеру получать автоматические обновления с любого сервера через HTTP-соединение. Эта технология была предложена WHATWG (рабочая группа по технологии веб-гипертекстовых приложений) и впервые была реализована веб-браузером Opera в 2006 году. Это стандарт, который описывает, как серверы инициализируют передачу данных с клиентом после установки начального клиентского соединения. вверх. Они отправляют клиенту обновления сообщений или непрерывные обновления, чтобы улучшить кроссбраузерность потоковой передачи через API-интерфейс javascript, называемый EventSource.

SSE поддерживается несколькими браузерами, такими как Mozilla, Chrome и Safari. Internet Explorer и Edge по-прежнему не поддерживают эту технику. Он также поддерживает до 6 параллельных подключений из браузера. Он поддерживает простую балансировку нагрузки, а также обеспечивает обработку повторного подключения, поддерживаемую EventSource.

4. Комета:
Это модель веб-приложения, в которой длительный запрос HTTPS позволяет серверу отправлять данные на клиент-сервер, то есть в веб-браузер, без явного запроса веб-браузером какого-либо обновления данных. Comet известна, как и многие другие имена, такие как Ajax Push, Reverse Ajax и т. Д. Основная идея разработки Comet заключалась в том, чтобы сделать единичный и регулярный запрос HTTPS и зависеть от бесконечного ответа от сервера.

Веб-сервер принимает новый входящий запрос и запускает новый ответ с текущими данными, но сервер не завершает ответ, и, следовательно, браузер сохраняет соединение открытым и ожидает новых данных, всякий раз, когда поступают новые данные, сервер будет записывать это в поток ответов. Сервер отправляет уникальную строку в конце этого конкретного обновления. Например. «ThisCometMessageEnded».
Comet снимает ограничения постраничной веб-модели и опроса, предлагая двустороннюю связь.

Конкретные методы реализации Comet делятся на две основные категории: потоковая передача и длительный опрос.

  • I. Потоковая передача -
    Любое приложение, использующее потоковую передачу Comet, открывает одно постоянное соединение клиентского браузера с сервером для всех событий Comet. Методы потоковой передачи Comet:
     (а) Скрытый iframe
    (б) XMLHttpRequest
  • II. Длинный опрос -
    Конкретные технологии для выполнения длительного опроса включают:
     (a) Длинный опрос XMLHttpRequest
    (b) Длинный опрос тега сценария