EventSource ile React'te SSE Akışlarını Tüketme
useEffect içinde EventSource ile bir SSE uç noktasına bağlanın ve akış verilerini gerçek zamanlı olarak görüntüleyin.
EventSource ile React'te SSE Akışlarını Tüketme, CoddyKit'te ücretsiz bir React Academy dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, React Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. React Academy kursu toplamda 4 dersten oluşur.
EventSource Bağlantısı Oluşturma
new EventSource(url), belirtilen URL'ye bir SSE bağlantısı oluşturur. Tarayıcı, Accept: text/event-stream üst bilgisiyle HTTP GET isteğini hemen açar. Sunucu bu bağlantıyı açık tutar ve olayları akıtır. EventSource, tarayıcıda yerleşik bir API'dir; temel kullanım için kitaplık gerekmez.
Bağlantı Yaşam Döngüsü Durumları
EventSource'un üç hazır olma durumu vardır: 0 (CONNECTING) — bağlantı kuruluyor veya yeniden kuruluyor, 1 (OPEN) — bağlantı kuruldu ve olaylar akıyor, 2 (CLOSED) — bağlantı kapatıldı ve yeniden bağlanmayacak. Geçerli durumu belirlemek için eventSource.readyState değerini denetleyin.
Genel Olaylar için onmessage
eventSource.onmessage işleyicisi, açık bir olay türü belirtilmemiş sunucu olayları için çalışır (sunucu, data: ... gönderir ancak event: alanını göndermez). İşleyici, event.data değerinin dize biçimindeki yük olduğu bir olay nesnesi alır. Sunucu genellikle verileri JSON.stringify ile JSON biçimine dönüştürür; alındığında JSON.parse ile ayrıştırırsınız.
Adlandırılmış Özel Olaylar
Sunucu, adlandırılmış olaylar gönderebilir: event: userJoined
data: {"userId": "123"}
. Tarayıcıda eventSource.addEventListener('userJoined', handler) ile dinleyin. Bu, tek bir SSE bağlantısı üzerinden birden çok olay türünün çoklanmasını sağlar; her olay türünün kendi işleyicisi olduğundan kod temiz ve düzenli kalır.
event.data Ayrıştırma
SSE verileri dizeler halinde gelir. Yapılandırılmış veriler için sunucu JSON.stringify(payload) gönderir ve istemci bunu ayrıştırır: const data = JSON.parse(event.data). Sunucudan gelen hatalı JSON'u düzgünce ele almak için JSON.parse çağrısını her zaman try/catch içinde kullanın; hatayı günlüğe kaydedin ve hatalı olayı yok sayın.
EventSource Yaşam Döngüsü için useEffect
EventSource'u bir useEffect içinde oluşturup kapatın: bileşen bağlandığında bağlantıyı oluşturun, olay işleyicilerini bağlayın ve eventSource.close() çağrısını yapan bir temizleme işlevi döndürün. Temizleme yapılmazsa bileşen bağlantısı kesildiğinde, kullanıcı başka bir sayfaya gittiğinde veya efekt farklı bağımlılıklarla yeniden çalıştığında bağlantı açık kalır.
Mesaj Geldiğinde Durumu Güncelleme
eventSource.onmessage işleyicisinin içinde, yeni verileri yansıtmak için React durumunu güncelleyin: setMessages(prev => [...prev, JSON.parse(event.data)]). Eski kapanım sorunlarını önlemek için setState'in işlevsel biçimini kullanın; olay işleyicisi başlangıçtaki durum değerini yakalar ve işlevsel güncelleme, işlemin her zaman en güncel durum değerini temel almasını sağlar.
Otomatik Yeniden Bağlanma
EventSource, ağ hatası veya sunucunun yeniden başlatılması nedeniyle bağlantı kesildiğinde otomatik olarak yeniden bağlanır. Tarayıcı kısa bir süre bekler (genellikle akış içindeki retry: 3000 ile sunucu tarafından yapılandırılabilen 3 saniye) ve ardından yeniden bağlanır. Yeniden bağlanma mantığını uygulamanız gerekmez; bu özellik EventSource API'sinin içinde yerleşik olarak bulunur.
Last-Event-ID Üstbilgisi
EventSource, alınan son olayın kimliğini izler (sunucu bu kimliği akış içinde id: 123 kullanarak belirler). Yeniden bağlanırken tarayıcı bu kimliği Last-Event-ID HTTP üstbilgisinde otomatik olarak gönderir. İyi tasarlanmış bir sunucu, yeniden bağlanma sırasında hiçbir olayın kaybolmamasını sağlamak için kaçırılan olayları yeniden göndermek üzere bu kimliği kullanır.
Kimlik Bilgilerini ve Üstbilgileri Gönderme
EventSource, özel üstbilgileri doğrudan desteklemez. Kimlik doğrulama için çerezleri kullanın (new EventSource(url, { withCredentials: true }) çerezleri gönderir) veya kimlik doğrulama belirtecini URL sorgu parametresi olarak ekleyin. Authorization üstbilgilerine ihtiyacınız varsa, SSE yanıtını elle işlemek için EventSource yerine ReadableStream ile Fetch API'yi kullanın.
Bağlantı Hatalarını İşleme
EventSource bir hatayla karşılaştığında hata işleyicisi çalışır. readyState, yeniden deneme yapılacaksa CONNECTING, yapılmayacaksa CLOSED olur. Geçici bir ağ hatasıyla (otomatik olarak yeniden denenecek) kalıcı bir hatayı (sunucunun 200 olmayan bir durum kodu döndürmesi) ayırt etmek için hata işleyicisinde readyState değerini kontrol edin. Kalıcı hatalarda bağlantıyı kapatın ve kullanıcıyı bilgilendirin.
EventSource ile Otomatik Yeniden Bağlanma
Ağ hatası nedeniyle bir EventSource bağlantısı kesildiğinde ne olur?
Ders Özeti: React'te EventSource
EventSource ile oluşturulan SSE bağlantısının readyStates değerleri CONNECTING, OPEN ve CLOSED'dur. Genel olayları genel olay işleyicisi, adlandırılmış olay türlerini ise addEventListener işler. JSON.parse(event.data), yapılandırılmış yükü çıkarır. EventSource'u useEffect içinde oluşturun ve temizleyin. Otomatik yeniden bağlanma yerleşik olarak bulunur; EventSource ağ hatalarından sonra yeniden dener ve kaçırılan olayları yeniden göndermek için Last-Event-ID kullanır. Kimlik doğrulamasını çerezler (withCredentials) veya URL sorgu parametreleriyle yapın.
Sıkça Sorulan Sorular
“EventSource ile React'te SSE Akışlarını Tüketme” dersi ücretsiz mi?
Evet — “EventSource ile React'te SSE Akışlarını Tüketme” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve React Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. React Academy kursu toplamda 4 dersten oluşur.
“EventSource ile React'te SSE Akışlarını Tüketme” dersinde ne öğreneceğim?
useEffect içinde EventSource ile bir SSE uç noktasına bağlanın ve akış verilerini gerçek zamanlı olarak görüntüleyin. React Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
React Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te React Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.
“EventSource ile React'te SSE Akışlarını Tüketme” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu React Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her React Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- SSE, WebSockets ve Yoklama Karşılaştırması
- EventSource ile React'te SSE Akışlarını Tüketme
- Uzun Yoklama Deseni ve Yeniden Bağlanma Mantığı
- Gerçek Zamanlı Bildirim Akışı Oluşturma