EMZETT.
Войти

Polling, long polling, SSE и WebSocket: сравнение реального времени

Коротко: Для живых данных в вебе есть polling (регулярный опрос), long polling (удержание ответа), server-sent events (сервер отправляет события) и WebSockets (двустороннее соединение).

Подробнее: HTTP классически работает как вопрос и ответ: клиент спрашивает, сервер отвечает. Для чатов, уведомлений, живых результатов или дашбордов вы хотите, чтобы сервер сам присылал новости. Есть четыре распространённые техники.

Подробности

Polling (short polling)

Клиент регулярно (каждые 5 секунд) спрашивает: «Есть ли что-то новое?».

setInterval(async () => {
  const r = await fetch('/api/news');
  // ...
}, 5000);

Просто, но большинство запросов пусты, а новая информация приходит с задержкой.

См. также: WebSockets, Server-sent events и реальное время, вебхуки, HTTP keep-alive