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