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. |