Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI23 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Long Polling
Long Polling — это техника реального времени для получения данных с сервера, при которой клиент отправляет HTTP запрос, а сервер держит соединение открытым, пока не появятся новые данные.
Как это работает
В отличие от обычного Short Polling, где клиент регулярно спрашивает сервер (например, каждую секунду), Long Polling работает так:
- Клиент отправляет запрос на сервер
- Сервер получает запрос и проверяет: есть ли новые данные?
- Если данных нет — сервер НЕ закрывает соединение, а ждёт (например, 30 секунд)
- Когда появляются новые данные — сервер сразу отправляет ответ
- Клиент получает ответ, обновляет интерфейс и тут же отправляет новый Long Poll запрос
- Процесс повторяется
Пример реализации на фронте
class LongPoller {
constructor(url, onData) {
this.url = url;
this.onData = onData;
this.isRunning = false;
}
start() {
this.isRunning = true;
this.poll();
}
stop() {
this.isRunning = false;
}
async poll() {
while (this.isRunning) {
try {
const response = await fetch(this.url, {
method: 'GET',
timeout: 60000 // Ждём ответ 60 сек
});
if (response.ok) {
const data = await response.json();
if (data) {
this.onData(data);
}
}
} catch (error) {
console.error('Long poll error:', error);
// Ждём перед retry
await new Promise(r => setTimeout(r, 5000));
}
}
}
}
// Использование
const poller = new LongPoller(
'/api/messages',
(data) => {
console.log('Новые сообщения:', data);
// Обновляем интерфейс
}
);
poller.start();
Плюсы Long Polling
- Универсальность — работает везде, даже где WebSocket блокируют
- Простота — легко реализовать на любом стеке
- Контроль — полный контроль над таймаутами и retry
- Совместимость — поддерживается старыми браузерами
Минусы Long Polling
- Задержка — может быть задержка до N секунд перед получением данных
- Нагрузка на сервер — много открытых соединений потребляют ресурсы
- Трафик — каждый poll = HTTP запрос с headers, что неэффективно
- Масштабируемость — сложно масштабировать на миллионы пользователей
Когда использовать
- Чаты и мессенджеры (низкие требования к latency)
- Уведомления
- Live ленты
- Когда WebSocket недоступен
Альтернативы
- WebSocket — двусторонний канал в реальном времени (лучше всего)
- Server-Sent Events (SSE) — сервер отправляет данные в реальном времени по HTTP
- Polling — простой опрос без ожидания
- WebRTC — для peer-to-peer коммуникации
В современных приложениях Long Polling считается устаревшей техникой, но остаётся важной для понимания и использования в специфических сценариях.