PassFront
  1. PassFront
  2. База знаний
  3. DOM и браузер

В чем разница между Polling и Long Polling?

DOM и браузер

Polling и Long Polling — способы получать обновления с сервера через HTTP: обычный polling шлёт запросы по таймеру, а long polling держит запрос открытым до появления данных.

Polling (короткие опросы)

Клиент периодически (по таймеру) шлёт запросы, спрашивая «есть ли новое?»:

setInterval(async () => {
  const data = await fetch('/updates');
}, 5000); // каждые 5 секунд
  • Плюсы: просто.
  • Минусы: много пустых запросов (нет данных), задержка до interval, лишняя нагрузка.

Long Polling (длинные опросы)

Клиент шлёт запрос, сервер не отвечает сразу, а держит соединение открытым, пока не появятся данные (или таймаут); клиент, получив ответ, сразу шлёт новый:

async function poll() {
  const data = await fetch('/updates'); // сервер держит до появления данных
  handle(data);
  poll(); // сразу новый запрос
}
  • Плюсы: почти реальное время, меньше пустых запросов, меньше задержка.
  • Минусы: сервер держит открытые соединения (ресурсы), переустановка соединения.

Главное различие

  • Polling — запросы по таймеру, часто впустую, фиксированная задержка.
  • Long Polling — сервер держит запрос до события, ответ приходит по готовности.

Против WebSocket

Оба — «эмуляция push» поверх HTTP. WebSocket — постоянное двустороннее соединение, эффективнее для интенсивного обмена; long polling — запасной вариант.

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

Polling — периодические запросы по таймеру (много пустых, задержка до интервала). Long Polling — сервер держит запрос открытым до появления данных, затем клиент сразу шлёт новый (почти реальное время, меньше пустых запросов). Оба поверх HTTP; для интенсивного обмена лучше WebSocket.

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