(продолжение предыдущего поста)
## 1. Short Polling (короткий опрос)
Принцип работы:
Клиент регулярно (с фиксированным интервалом) отправляет HTTP‑запросы на сервер: *«Есть ли новые данные?»*
Сервер отвечает сразу, даже если данных нет.
Схема:
Клиент → запрос → Сервер
Клиент ← ответ (пустой/с данными) ← Сервер
( пауза )
Клиент → запрос → Сервер
...
Плюсы:
- Простота реализации.
- Работает на любом HTTP‑сервере.
- Совместим со всеми браузерами.
Минусы:
- Высокий overhead: много пустых ответов.
- Задержка между обновлениями = интервал опроса.
- Нагрузка на сеть и сервер из‑за частых запросов.
Когда использовать:
Редкие обновления, простота важнее эффективности.
## 2. Long Polling (длинный опрос)
Принцип работы:
Клиент отправляет запрос. Сервер держит соединение открытым и отвечает только когда есть данные (или по таймауту). После ответа клиент сразу отправляет новый запрос.
Схема:
Клиент → запрос → Сервер
(сервер ждёт данных)
Клиент ← ответ (с данными) ← Сервер
Клиент → запрос → Сервер
...
Плюсы:
- Меньше пустых ответов, чем в Short Polling.
- Почти мгновенная доставка данных (как только они появляются).
- Простая реализация.
Минусы:
- Соединение постоянно переподключается.
- Высокая задержка при потерях пакетов (нужно ждать таймаут).
- Нагрузка на сервер из‑за долгих соединений.
Когда использовать:
Средние требования к скорости, устаревшие системы без WebSocket.
## 3. SSE (Server‑Sent Events)
Принцип работы:
Однонаправленный канал: сервер самостоятельно отправляет данные клиенту через постоянное HTTP‑соединение. Клиент слушает события.
Схема:
Клиент → открывает поток → Сервер
(соединение держится)
Сервер → событие → Клиент
Сервер → событие → Клиент
...
Плюсы:
- Автоматическая доставка данных от сервера.
- Низкое потребление ресурсов (одно соединение).
- Встроенная поддержка перезапуска при обрыве.
- Простой API в браузерах (
EventSource).Минусы:
- Только сервер → клиент (однонаправленный).
- Ограниченная поддержка в старых браузерах.
- Может конфликтовать с прокси/файрволами.
Когда использовать:
Новостные ленты, уведомления, мониторинг (где нужен только push от сервера).
## 4. WebSocket
Принцип работы:
Двунаправленный полнодуплексный канал. После рукопожатия (HTTP → WebSocket) клиент и сервер могут одновременно отправлять данные.
Схема:
Клиент → HTTP-рукопожатие → Сервер
(переход на WebSocket)
Клиент ↔️ данные ↔️ Сервер
(двусторонний обмен в реальном времени)
Плюсы:
- Мгновенный двусторонний обмен.
- Минимальный overhead (нет HTTP‑заголовков).
- Подходит для чатов, игр, коллаборативных приложений.
Минусы:
- Сложнее реализовать (нужен WebSocket‑сервер).
- Требует поддержки на стороне сервера и клиента.
- Может блокироваться корпоративными сетями.
Когда использовать:
Интерактивные приложения (чаты, онлайн‑игры, трейдинг).