Sobes.tech
Middle+

HTML5'te server-sent olayları neden tanıtıldı?

sobes.tech yapay zeka

AI'dan gelen yanıt

Sunucu ve istemci arasında tek yönlü iletişim kanalı kurmak için. Sunucu, bağlantı kurulduktan sonra herhangi bir zamanda istemciye veri gönderebilir.

Ana özellikler ve avantajlar:

  • Verimlilik: Normal HTTP bağlantısı kullanılır, polling'e kıyasla ek yükleri en aza indirir.
  • Basitlik: Sunucu tarafından gönderilen olaylar API'si (SSE), WebSockets'ten daha basit kullanılır ve tek yönlü iletişim sağlar.
  • Otomatik yeniden bağlanma: Tarayıcı, bağlantı kesildiğinde otomatik olarak yeniden bağlanmaya çalışır.
  • Veri türleri desteği: text/event-stream formatında metin verisi gönderimi desteklenir.
  • Tarayıcı desteği: Modern tarayıcılar tarafından geniş çapta desteklenir.

Uygulamalar:

  • Gerçek zamanlı haber akışlarının güncellenmesi.
  • Olay bildirimleri (örneğin, yeni mesajlar).
  • Gerçek zamanlı veri izleme (örneğin, borsa fiyatları).
  • Uzun süren görevlerin ilerlemesi.

Bu, geleneksel polling'e bir alternatiftir; burada istemci, düzenli olarak sunucuya güncellemeler olup olmadığını sorar. WebSockets'ten farklı olarak, SSE tek yönlüdür, bu da verilerin yalnızca sunucudan istemciye iletildiği durumlarda kullanımını basitleştirir.

İstemci tarafı örneği (JavaScript):

const eventSource = new EventSource('/events'); // Sunucudan olayları almak için URL

eventSource.onmessage = function(event) {
  // Alınan verilerin işlenmesi
  console.log('Alınan mesaj:', event.data);
};

eventSource.onerror = function(error) {
  // Bağlantı hatalarının işlenmesi
  console.error('Server-Sent Events Hatası:', error);
};

eventSource.addEventListener('customEvent', function(event) {
  // 'customEvent' türündeki özel olayın işlenmesi
  console.log('Özel olay alındı:', event.data);
});

Sunucu tarafı veri formatı örneği:

event: customEvent
data: {"message": "Merhaba!"}

data: Basit metin mesajı

id: 123 // Olay kimliği, otomatik yeniden bağlanma için kullanılır

retry: 5000 // Bir sonraki yeniden bağlanma gecikmesi milisaniye cinsinden