Artikel ini adalah artikel cermin dari terjemahan mesin, silakan klik di sini untuk melompat ke artikel aslinya.

Melihat: 4163|Jawab: 4

[Inti .NET] SSE (1) menggunakan ASP.NET Core sebagai server SSE

[Salin tautan]
Dipaparkan pada 2024-4-5 11:54:12 | | | |
Pengenalan SSE

SSE adalah singkatan dari Server-Sent Events, yang secara harfiah berarti bahwa server mendorong informasi ke klien. SSE adalah saluran satu arah,Server hanya dapat mengirim informasi ke klienKlien hanya dapat menerima permintaan SSE setelah memicu pertama kali, dan tidak dapat membalas.



Fitur utama SSE meliputi:

  • Kemudahan penggunaan: SSE menggunakan format data berbasis teks seperti teks biasa, JSON, dll., sehingga relatif mudah untuk mengirim dan mengurai data.
  • Komunikasi satu arah: SSE mendukung komunikasi satu arah antara server dan klien, di mana server dapat secara aktif mendorong data ke klien, sedangkan klien hanya dapat menerima data.
  • Real-time: SSE membangun koneksi jangka panjang, memungkinkan server untuk mendorong data ke klien secara real-time tanpa permintaan yang sering.


SSE vs. WebSocket

WebSocket adalah teknologi web lain yang digunakan untuk memungkinkan komunikasi dua arah waktu nyata, yang berbeda dari SSE dalam beberapa hal. Berikut perbandingan antara SSE dan WebSocket:

  • Arah dorongan data: SSE adalah komunikasi satu arah antara server dan klien, dan server dapat secara aktif mendorong data ke klien. WebSocket, di sisi lain, adalah komunikasi dua arah, memungkinkan pertukaran data dua arah secara real-time antara server dan klien.
  • Pembentukan Koneksi: SSE menggunakan koneksi berbasis HTTP yang panjang untuk membuat koneksi melalui permintaan dan respons HTTP biasa, sehingga mendorong data waktu nyata. WebSockets menggunakan protokol khusus untuk mengaktifkan komunikasi dua arah dengan membuat koneksi WebSocket.
  • Kompatibilitas: Karena SSE didasarkan pada protokol HTTP, SSE dapat digunakan di sebagian besar browser modern dan tidak memerlukan peningkatan protokol tambahan. WebSocket juga didukung di sebagian besar browser modern, tetapi dapat bermasalah di beberapa lingkungan jaringan khusus.
  • Skenario yang berlaku: SSE cocok untuk skenario di mana server mendorong data ke klien secara real time, seperti pembaruan harga saham, push real-time berita, dll. WebSocket cocok untuk skenario yang memerlukan komunikasi dua arah waktu nyata, seperti aplikasi obrolan dan pengeditan kolaboratif multi-orang.
  • Bergantung pada kebutuhan dan skenario bisnis spesifik Anda, memilih SSE atau WebSocket tergantung pada kebutuhan Anda yang sebenarnya. Jika Anda hanya membutuhkan server untuk mendorong data ke klien dalam satu arah dan ingin membuatnya tetap sederhana dan kompatibel, SSE adalah pilihan yang baik. Jika Anda perlu mencapai komunikasi dua arah, atau jika Anda membutuhkan fitur dan kontrol yang lebih canggih, maka WebSocket mungkin lebih cocok untuk kebutuhan Anda.


Format aliran peristiwa SSE

Aliran peristiwa adalah aliran data teks sederhana yang harus dikodekan dalam format UTF-8. Aliran acaraPesan dipisahkan oleh sepasang jeda baris。 Baris komentar perilaku yang dimulai dengan titik dua diabaikan. Setiap bidang diwakili oleh nama bidang, diikuti dengan titik dua, dan kemudian data teks untuk nilai bidang tersebut.

Bidangnya adalah sebagai berikut:

peristiwa: String yang digunakan untuk mengidentifikasi jenis peristiwa. Jika string ini ditentukan, browser mengirimkan peristiwa dengan nama peristiwa yang ditentukan ke pemroses yang sesuai; Klien harus menggunakan addEventListener() untuk mendengarkan peristiwa yang ditentukan. Jika pesan tidak menentukan nama peristiwa, maka penanganan onmessage dapat dipanggil.
data: Bidang data pesan. Ketika EventSource menerima beberapa baris berurutan yang dimulai dengan data:, EventSource menggabungkannya, menyisipkan jeda baris di antara keduanya. Putus baris di akhir dihapus.
Id: ID Peristiwa, yang menjadi nilai properti properti internal objek EventSource saat ini "ID Peristiwa Terakhir".
Pengulangan: waktu untuk terhubung kembali. Jika koneksi ke server terputus, browser akan menunggu jangka waktu yang ditentukan dan kemudian mencoba menyambungkan kembali. Ini harus berupa bilangan bulat yang menentukan waktu untuk menyambungkan kembali dalam milidetik. Jika nilai non-bilangan bulat ditentukan, bidang tersebut diabaikan.


Instans EventSource

Antarmuka EventSource adalah antarmuka antara konten web dan server untuk mengirim peristiwa.

Properti EventHandler

EventSource.onopen dipanggil saat koneksi terbuka.
EventSource.onmessage dipanggil saat pesan diterima tanpa atribut peristiwa.
EventSource.onerror dipanggil pada pengecualian koneksi.

Server SSE (ASP.NET Inti)

Buat proyek ASP.NET Core baru dengan .NET 8 dan kode pengontrol adalah sebagai berikut:


Untuk klien yang membuat tautan, kirim pesan ke klien setiap interval detik.


Klien SSE

Tulis kode klien di halaman Lihat menggunakan html dan js sebagai berikut:


Mulailah proyek dengan efek berikut:



Referensi:
Login hyperlink terlihat.
Login hyperlink terlihat.
Login hyperlink terlihat.




Mantan:Perbandingan sederhana dari cache Garnet dan Redis dikembangkan dengan .NET
Depan:JS mendengarkan kombinasi tombol ctrl + enter
 Tuan tanah| Dipaparkan pada 2024-4-5 12:03:28 |
API EventSource browser default memberlakukan beberapa batasan pada jenis permintaan yang diizinkan untuk dibuat: satu-satunya url parameter yang diizinkan untuk diteruskan adalah dan withCredentials, oleh karena itu:

Anda tidak dapat meneruskan isi permintaan: Anda harus mengkodekan semua informasi yang diperlukan untuk menjalankan permintaan di URL, yang dibatasi hingga 2000 karakter di sebagian besar browser.
Anda tidak dapat meneruskan header permintaan kustom
Anda hanya dapat membuat permintaan GET - tidak ada metode lain yang dapat ditentukan.
Jika koneksi terputus, Anda tidak memiliki kendali atas kebijakan coba lagi: browser secara diam-diam mencoba kembali untuk Anda beberapa kali dan kemudian berhenti, yang tidak cukup baik untuk semua jenis aplikasi yang kuat.


dapatkan-sumber-peristiwa-

Pustaka menyediakan antarmuka alternatif berdasarkan Fetch API untuk menggunakan peristiwa yang dikirim server. Ini sepenuhnya kompatibel dengan format aliran acara, jadi jika Anda sudah memiliki server yang memancarkan peristiwa ini, Anda dapat menggunakannya seperti sebelumnya. Namun, Anda sekarang memiliki lebih banyak kontrol atas permintaan dan respons

Login hyperlink terlihat.
Dipaparkan pada 2024-11-14 14:34:25 |
arif
 Tuan tanah| Dipaparkan pada 2024-12-25 16:36:44 |
Terak kecil Dipaparkan pada 2024-4-5 12:03
API EventSource browser default memberlakukan beberapa batasan pada jenis permintaan yang diizinkan: satu-satunya url parameter yang diizinkan untuk diteruskan adalah withCredentia ...

Mengkompilasi paket NPM ke dalam skrip JavaScript siap browser
https://www.itsvse.com/thread-10762-1-1.html
 Tuan tanah| Dipaparkan pada 2024-12-25 16:48:45 |
SSE (2) masalah koneksi ulang sumber peristiwa-peristiwa setelah beralih tab browser
https://www.itsvse.com/thread-10906-1-1.html
Sanggahan:
Semua perangkat lunak, materi pemrograman, atau artikel yang diterbitkan oleh Code Farmer Network hanya untuk tujuan pembelajaran dan penelitian; Konten di atas tidak boleh digunakan untuk tujuan komersial atau ilegal, jika tidak, pengguna akan menanggung semua konsekuensi. Informasi di situs ini berasal dari Internet, dan sengketa hak cipta tidak ada hubungannya dengan situs ini. Anda harus sepenuhnya menghapus konten di atas dari komputer Anda dalam waktu 24 jam setelah pengunduhan. Jika Anda menyukai program ini, harap dukung perangkat lunak asli, pembelian pendaftaran, dan dapatkan layanan asli yang lebih baik. Jika ada pelanggaran, silakan hubungi kami melalui email.

Mail To:help@itsvse.com