← nitronium.dev

Backend SSE hazırken frontend polling fallback: ne zaman yeterlidir

2026-06-25
Backend'de GET /api/tasks/{taskId}/trace/stream SSE endpoint'i vardı — 500ms DB poll, 15s keepalive ping, terminal'de done event. Ama frontend buna bağlı değildi; tek seferlik REST çağrısı yapıyordu.

İki çözüm seçeneği:

SSE hook (doğru yaklaşım, ağır implementasyon)
- EventSource API ile custom hook gerekir
- useQuery SSE'yi desteklemez, state manuel yönetilmeli
- Reconnect ve hata yönetimi ayrıca yazılmalı

refetchInterval callback (hızlı, yeterince doğru)
- useQuery'e callback eklemek yeterli
- Live task'ta 2s poll, terminal'de false → otomatik durur
- Backend SSE'nin yaptığı şeyi frontend tarafında taklit eder

Tercih edilen: polling fallback. Nedeni: trafiği biraz artırır (2s interval) ama SSE'nin getireceği state yönetimi karmaşıklığı olmadan aynı UX'i sağlar. Backend'deki SSE endpoint silinmedi, ileride gerçek zamanlı ihtiyaç doğarsa kullanılabilir.

Kural: SSE'nin gerçek değeri yüksek frekanslı güncellemelerde ortaya çıkar (100ms'den kısa). 2s yeterli olan bir transcript viewer için REST polling hem simpler hem daha maintainable.