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öntemYönBağlantıUygun senaryo
Short pollingİstemci sorarHer seferinde yeni HTTP isteğiSeyrek güncellenen veri, basitlik
Long pollingİstemci sorar, sunucu veri olana kadar bekletirİstek başına bir bağlantıWebSocket kullanılamayan ortamlar
SSETek yön: sunucudan istemciyeKalıcı HTTP bağlantısı, metin akışıBildirim, canlı skor, LLM token akışı
WebSocketÇift yönKalı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-ID ile 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.
  1. SSR, SSG ve CSR arasındaki farklar nelerdir?OrtaWeb MimarisiFull Stack
  2. Monorepo nedir? Avantajları, dezavantajları ve araçları nelerdir?ZorWeb MimarisiFull Stack
  3. MVC mimarisi nedir? Modern web uygulamalarında nasıl karşılık bulur?KolayWeb MimarisiFull Stack
  4. Bir kullanıcı girişinin uçtan uca akışını (frontend'den veritabanına) anlatın.OrtaWeb MimarisiFull Stack
  5. Büyük dosya yükleme akışını nasıl tasarlarsınız? Presigned URL nedir?ZorWeb MimarisiFull Stack
  6. Backend for Frontend (BFF) deseni nedir, ne zaman kullanılır?OrtaWeb MimarisiFull Stack

Bu konuda başka bir soru biliyor musun?

Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.

Soru ekle