PassFront
  1. PassFront
  2. База знаний
  3. DNS, WebSocket и другие протоколы

Чем WebSocket отличается от long polling и SSE?

DNS, WebSocket и другие протоколы

WebSocket — постоянное полнодуплексное соединение поверх одного TCP, SSE — односторонний поток «сервер → клиент» по обычному HTTP, long polling — эмуляция пушей через висящие запросы.

Long polling

Клиент шлёт запрос, сервер держит его до появления данных, отвечает — клиент тут же спрашивает снова. Просто и работает везде, но каждый «пуш» — полноценный HTTP-запрос с заголовками, плюс задержки на переподключение.

Server-Sent Events

  • text/event-stream поверх HTTP: сервер пишет события в открытый ответ.
  • Автоматический реконнект из коробки, дружит с прокси и HTTP/2.
  • Ограничения: только направление «сервер → клиент» и только текст.

WebSocket

  • Апгрейд с HTTP через заголовок Upgrade: websocket, дальше двусторонние фреймы — текст и бинарные данные.
  • Минимальные накладные расходы на сообщение: чаты, игры, совместное редактирование.
  • Сложнее в эксплуатации: стейтфул-соединения, балансировка, heartbeat.

Как выбирать

Редкие уведомления — проще SSE; настоящая двусторонняя интерактивность — WebSocket; long polling — запасной вариант для старых окружений.

Коротко для собеседования

Выбор определяется направлением данных: если пишет только сервер, хватит SSE с автореконнектом, если общаются обе стороны — нужен WebSocket. Платой за WebSocket становится эксплуатация: стейтфул-соединения, heartbeat и балансировка.

Другие вопросы раздела