Realtime: WebSocket, SSE или polling
Три способа делать «живое» обновление в вебе. Каждый со своей нишей. Чаще всего выбирают не тот.
«Сделай живое обновление» — типовая задача. Чат, биржевые котировки, нотификации. Три инструмента, и часто выбирают самый сложный из них.
WebSocket — двусторонний канал. Клиент и сервер свободно шлют сообщения. Нужен когда:
- Чат, мессенджер.
- Многопользовательская игра/доска.
- Совместное редактирование.
Server-Sent Events (SSE) — однонаправленный поток с сервера. Простой, по обычному HTTP. Подходит когда:
- Котировки, цены, статус заказа.
- Стрим логов, прогресс задачи.
- Любые «обновления от сервера», без ответных сообщений от клиента.
Long polling / short polling. Клиент периодически спрашивает «что нового». Костыль, но иногда подходит:
- Старые корпоративные сети, где WS заблокирован.
- Очень редкие обновления (раз в минуту), не оправдывает persistent connection.
Типовая ошибка — берут WebSocket для статуса заказа, потом мучаются с reconnect, heartbeat, состояниями. SSE справился бы и проще, и устойчивее.