WebSockets і realtime на сайті: чат, нотифікації, live-дашборди
«Зробіть нам чат» / «онлайн-статус замовлення» / «live-дашборд» — клієнт хоче realtime. Розкажемо, що обрати з трьох опцій і як не покласти сервер.
Три способи realtime
- WebSockets — повна дуплексна звʼязок. Чат, ігри, спільне редагування. Складніше масштабувати.
- Server-Sent Events (SSE) — однонаправлений потік сервер → клієнт. Live-дашборди, нотифікації, статуси. Простіше за WebSocket.
- Supabase Realtime / Firestore — managed-сервіс над WebSockets з підпискою на зміни БД. Платимо за з'єднання, але 0 інфраструктури.
Що для чого
- Чат продавець-покупець → WebSocket (Socket.io)
- Статус замовлення в e-commerce → SSE (легше і дешевше)
- Live-дашборд для команди → Supabase Realtime на postgres_changes
- Multiplayer ігри → WebSocket + бінарний протокол
- Spreadsheet з спільним редагуванням → Yjs / Liveblocks
Підводні камені
- Sticky sessions — за nginx без них з'єднання падають при балансуванні
- Heartbeat / ping — без них з'єднання тихо помирають за NAT через 60 сек
- Reconnect з backoff — без нього 100 клієнтів після обриву покладуть сервер
- Авторизація — токен передавайте у sec-websocket-protocol, не у URL (логи)
- Масштабування — Redis pub/sub або Centrifugo для горизонтального
Скільки коштує
Чат на сайті — від $800, тиждень. Live-дашборд з Supabase — від $500. Multiplayer на 10k+ — від $5000.
Замовити → /services/custom-software або /services/web-development.
