Short Polling, Long Polling та SSE

Вам потрібно надіслати дані з сервера на клієнт. Ось три способи, як це зробити.

Short Polling

Уявіть клієнта в ресторані. Кожні 5 секунд клієнт запитує офіціанта, чи готова їжа.

Клієнт повторює це запитання через регулярні проміжки часу.

Проблеми:

  • Занадто багато запитів надходить на ваш сервер.
  • Оновлення затримуються. Якщо їжа готова через 1 секунду після запитання, клієнту доведеться чекати ще 4 секунди, щоб запитати знову.
  • Це марнує мережеві ресурси.

Long Polling

Клієнт каже офіціанту: «Скажіть мені, коли моя їжа буде готова».

Офіціант залишається біля столу і чекає. Якщо шеф-кухар завершує приготування страви, офіціант негайно повідомляє про це клієнта. Якщо приготування займає занадто багато часу, офіціант каже клієнту, що їжа ще не готова.

Проблеми:

  • З'єднання залишаються відкритими протягом тривалого часу.
  • Можуть виникати таймаути з'єднання.
  • Важко обслуговувати багато клієнтів одночасно.

Server Sent Events (SSE)

Уявіть котирування акцій у реальному часі. Клієнт відкриває з'єднання один раз. Сервер тримає це з'єднання відкритим. Щоразу, коли ціна змінюється, сервер надсилає оновлення клієнту.

Ключові факти:

  • Це односторонній зв'язок.
  • Дані передаються лише від сервера до клієнта.
  • Клієнт не надсилає повідомлення у відповідь через це з'єднання.

Джерело: https://dev.to/guruharish_b/short-polling-long-polling-and-sse-20o5