Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 4163|Yanıt: 4

[.NET Core] SSE (1), SSE sunucusu olarak ASP.NET Core'u kullanır

[Bağlantıyı kopyala]
2024-4-5 tarihinde 11:54:12 tarihinde yayınlandı | | | |
SSE Giriş

SSE, Sunucu tarafından Gönderilen Olaylar anlamına gelir; bu kelimenin tam anlamıyla sunucunun istemciye bilgi gönderdiği anlamına gelir. SSE tek yönlü bir kanaldır,Sunucu yalnızca istemciye bilgi gönderebilirİstemci SSE isteğini ancak ilk tetiklendikten sonra alabilir ve yanıt veremez.



SSE'nin temel özellikleri şunlardır:

  • Kullanım kolaylığı: SSE, düz metin, JSON gibi metin tabanlı veri formatlarını kullanır; bu da veri göndermeyi ve ayrıştırmayı nispeten kolaylaştırır.
  • Tek yönlü iletişim: SSE, sunucu ile istemci arasında tek yönlü iletişimi destekler; sunucu veriyi aktif olarak istemciye iletebilirken, istemci sadece veriyi alabilir.
  • Gerçek zaman: SSE, uzun vadeli bağlantılar kurarak sunucuların verileri müşterilere gerçek zamanlı olarak sık istek olmadan göndermesini sağlar.


SSE vs. WebSocket

WebSocket, gerçek zamanlı iki yönlü iletişimi mümkün kılan bir diğer web teknolojisidir ve SSE'den bazı açılardan farklıdır. İşte SSE ile WebSocket arasında bir karşılaştırma:

  • Veri itme yönü: SSE, sunucu ile istemci arasında tek yönlü bir iletişimdir ve sunucu verileri aktif olarak istemciye itebilir. WebSocket ise çift yönlü iletişim olup, sunucu ile istemci arasında gerçek zamanlı iki yönlü veri alışverişi sağlar.
  • Bağlantı Kurulumu: SSE, sıradan HTTP istekleri ve yanıtları aracılığıyla bağlantı kurmak için uzun HTTP tabanlı bağlantılar kullanır, böylece gerçek zamanlı veri itişi sağlanır. WebSocket'ler, WebSocket bağlantıları kurarak iki yönlü iletişimi mümkün kılmak için özel protokoller kullanır.
  • Uyumluluk: SSE HTTP protokolüne dayandığı için çoğu modern tarayıcıda kullanılabilir ve ek protokol yükseltmeleri gerektirmez. WebSocket'ler modern tarayıcıların büyük çoğunluğunda da desteklenir, ancak bazı özel ağ ortamlarında sorun yaratabilirler.
  • Uygulanabilir senaryolar: SSE, sunucunun verileri müşteriye gerçek zamanlı olarak ilettiği durumlar için uygundur; örneğin hisse fiyatı güncellemeleri, haber gerçek zamanlı push vb. WebSocket, sohbet uygulamaları ve çok kişilik işbirlikçi düzenleme gibi gerçek zamanlı iki yönlü iletişim gerektiren senaryolar için uygundur.
  • Özel iş ihtiyaçlarınıza ve senaryolarınıza bağlı olarak, SSE veya WebSocket seçimi gerçek ihtiyaçlarınıza bağlıdır. Eğer sadece bir sunucuya ihtiyacı varsa ve verileri istemcilere tek bir yönde aktarmak istiyorsanız ve basit ve uyumlu tutmak istiyorsanız, SSE iyi bir seçimdir. İki yönlü iletişim sağlamak istiyorsanız veya daha gelişmiş özellikler ve kontrol istiyorsanız, WebSocket ihtiyaçlarınıza daha uygun olabilir.


SSE etkinlik akışı formatı

Olay akışı, UTF-8 formatında kodlanması gereken basit bir metin veri akışıdır. etkinlik akışıMesaj, bir çift satır kesimiyle ayrılmıştır。 Iki nokta ile başlayan davranış yorum satırları göz ardı edilir. Her alan bir alan adı, ardından iki nokta ve ardından o alanın değeri için metin verileriyle gösterilir.

Alanlar şunlardır:

olay: Olay türünü tanımlamak için kullanılan bir dize. Bu dizi belirtilirse, tarayıcı belirtilen olay adıyla bir etkinliği uygun dinleyiciye gönderir; İstemci, belirtilen olayı dinlemek için addEventListener() kullanmalıdır. Bir mesaj olay adını belirtmiyorsa, onmessage handler çağrılabilir.
veri: Mesajın veri alanı. EventSource, data:'dan başlayan ardışık birden fazla satır aldığında, bunları birleştirir ve aralarına bir satır sarası ekler. Uçtaki satır kesintisi kaldırılır.
Kimliği: Event ID, mevcut EventSource nesnesinin iç özelliği olan "Son Olay Kimliği"nin özellik değeri olur.
Yeni -den deneme: yeniden bağlantı kurma zamanı. Sunucuya bağlantı kaybedilirse, tarayıcı belirtilen süreyi bekler ve sonra yeniden bağlanmaya çalışır. Bu, yeniden bağlanma süresini milisaniyeler cinsinden belirten bir tam sayı olmalıdır. Tam sayı olmayan bir değer belirtilirse, alan göz ardı edilir.


EventSource örneği

EventSource arayüzü, web içeriği ile sunucu arasındaki etkinlikleri göndermek için kullanılan arayüzdür.

EventHandler özelliği

EventSource.onopen, bağlantı açıkken çağrılır.
EventSource.onmessage, bir mesajın etkinlik özdeniteliği olmadan alındığında çağrılır.
EventSource.onerror, bağlantı istisnaları üzerine çağrılır.

SSE Server (ASP.NET Core)

.NET 8 ile yeni bir ASP.NET Core projesi oluşturun ve denetleyici kodu şu şekildedir:


Bağlantıyı kuran istemci için, her saniye aralıkta bir istemciye mesaj gönderin.


SSE istemcisi

Görünüm sayfasında html ve js kullanarak istemci kodu aşağıdaki gibi yazın:


Projeye aşağıdaki etkilerle başlayın:



Referans:
Bağlantı girişi görünür.
Bağlantı girişi görünür.
Bağlantı girişi görünür.




Önceki:.NET ile geliştirilen Garnet önbellek ve Redis'in basit bir karşılaştırması
Önümüzdeki:JS, ctrl + enter tuş kombinasyonunu dinler
 Ev sahibi| 2024-4-5 tarihinde yayınlandı 12:03:28 |
Varsayılan tarayıcı EventSource API, izin verilen istek türlerine bazı kısıtlamalar getirir: geçiş izinleri yalnızca ve withCredentials'tır, dolayısıyla:

İstek gövdesini iletebilirsiniz: İstekleri çalıştırmak için gereken tüm bilgileri URL'de kodlamalısınız; URL çoğu tarayıcıda bu 2000 karakterle sınırlıdır.
Özel istek başlıklarını iletebilirsiniz
Sadece GET talebi yapabilirsiniz - başka bir yöntem belirtilemez.
Bağlantı kesilirse, tekrar deneme politikası üzerinde kontrolünüz yoktur: tarayıcı sessizce birkaç kez tekrar dener ve sonra durur, ki bu herhangi bir sağlam uygulama için yeterli değildir.


fetch-event-source

Kütüphane, sunucu tarafından gönderilen olayları kullanmak için Fetch API'sine dayalı alternatif bir arayüz sağlar. Etkinlik akışı formatıyla tamamen uyumludur, yani bu olayları yayınlayan bir sunucunuz varsa, eskisi gibi kullanabilirsin. Ancak artık talepler ve yanıtlar üzerinde daha fazla kontrolünüz var

Bağlantı girişi görünür.
2024-11-14 tarihinde 14:34:25 tarihinde yayınlandı |
Öğren
 Ev sahibi| 2024-12-25 tarihinde 16:36:44 tarihinde yayınlandı |
Küçük bir 2024-4-5 12:03 tarihinde yayınlandı
Varsayılan tarayıcı EventSource API, izin verilen istek türlerine bazı kısıtlamalar getirir: geçiş izni verilen tek parametre url'si withCredentia ...

NPM paketini tarayıcıya hazır bir JavaScript betiklerine derleyin
https://www.itsvse.com/thread-10762-1-1.html
 Ev sahibi| 2024-12-25 16:48:45 tarihinde yayınlandı |
SSE (2) tarayıcı sekmelerini değiştirdikten sonra fetch-event-source yeniden bağlantı sorunu
https://www.itsvse.com/thread-10906-1-1.html
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com