← 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.