WebSocket, Server-Sent Events (SSE) ve polling arasındaki farklar nelerdir?
Cevap
Sunucudan istemciye gerçek zamanlıya yakın veri iletmenin üç yaygın yolu:
| Yöntem | Yön | Bağlantı | Uygun senaryo |
|---|---|---|---|
| Short polling | İstemci sorar | Her seferinde yeni HTTP isteği | Seyrek güncellenen veri, basitlik |
| Long polling | İstemci sorar, sunucu veri olana kadar bekletir | İstek başına bir bağlantı | WebSocket kullanılamayan ortamlar |
| SSE | Tek yön: sunucudan istemciye | Kalıcı HTTP bağlantısı, metin akışı | Bildirim, canlı skor, LLM token akışı |
| WebSocket | Çift yön | Kalıcı TCP bağlantısı, kendi protokolü | Sohbet, oyun, ortak düzenleme |
// SSE: tarayıcı yeniden bağlanmayı kendisi yapar
const es = new EventSource("/api/events");
es.onmessage = (e) => console.log(JSON.parse(e.data));
// WebSocket
const ws = new WebSocket("wss://example.com/ws");
ws.onmessage = (e) => console.log(e.data);
ws.send(JSON.stringify({ type: "typing" }));Seçim kriterleri
- Yalnızca sunucu push ediyorsa SSE daha basittir: düz HTTP, otomatik yeniden bağlanma,
Last-Event-IDile kaldığı yerden devam. - İstemci de sık mesaj gönderiyorsa WebSocket.
- WebSocket kalıcı bağlantı olduğu için yatay ölçeklemede sticky session veya sunucular arası pub/sub (Redis) gerekir.
- Gerçek zaman gereksinimi zayıfsa polling en az altyapı gerektiren çözümdür.
İlgili Web Mimarisi soruları
- SSR, SSG ve CSR arasındaki farklar nelerdir?
- Monorepo nedir? Avantajları, dezavantajları ve araçları nelerdir?
- MVC mimarisi nedir? Modern web uygulamalarında nasıl karşılık bulur?
- Bir kullanıcı girişinin uçtan uca akışını (frontend'den veritabanına) anlatın.
- Büyük dosya yükleme akışını nasıl tasarlarsınız? Presigned URL nedir?
- Backend for Frontend (BFF) deseni nedir, ne zaman kullanılır?
Bu konuda başka bir soru biliyor musun?
Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.