Какие есть альтернативы Long Polling и в каких случаях их выбирать?
DOM и браузер
Альтернативы Long Polling: WebSocket (двусторонняя связь в реальном времени), Server-Sent Events (односторонний поток сервер→клиент), обычный polling и HTTP/2 Server Push. Выбор — по типу коммуникации.
Альтернативы и когда выбирать
WebSocket
Постоянное двустороннее соединение, обмен в реальном времени:
const socket = new WebSocket('wss://example.com');- Когда: чаты, игры, совместное редактирование, частый двусторонний обмен.
- Эффективнее long polling (одно соединение, минимум оверхеда).
Server-Sent Events (SSE)
Односторонний поток сервер → клиент по HTTP:
const source = new EventSource('/events');
source.onmessage = (e) => console.log(e.data);- Когда: уведомления, лента новостей, обновления котировок — только сервер → клиент.
- Проще WebSocket, авто-переподключение, работает поверх HTTP.
Обычный Polling
Запросы по таймеру.
- Когда: редкие обновления, простота важнее задержки, real-time не критичен.
HTTP/2 Server Push (устаревает)
Сервер отправлял ресурсы заранее, но данные push не были доступны из JS, так что заменой long polling он не был. Chrome и Firefox уже убрали его поддержку; вместо него используют 103 Early Hints и preload.
Как выбирать
- Двусторонний real-time → WebSocket.
- Только сервер → клиент → SSE.
- Редкие обновления, простота → polling.
- Long polling — когда WebSocket/SSE недоступны (старое окружение).
Коротко для собеседования
Альтернативы Long Polling: WebSocket (двусторонний real-time — чаты, игры), Server-Sent Events (односторонний поток сервер→клиент — уведомления, котировки, проще WS с авто-reconnect), обычный polling (редкие обновления, простота). Выбор: двусторонний → WebSocket, сервер→клиент → SSE, редкое → polling.