В чем разница между 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.