Apa itu ASP.NET Core SignalR?
Semua aplikasi yang terhubung ke internet terdiri dari server dan klien. Klien mengandalkan server untuk data, dan mekanisme utama mereka untuk menerima data adalah dengan membuat permintaan Protokol Transfer Hiperteks (HTTP). Beberapa aplikasi klien mengharuskan data yang sering berubah.
ASP.NET Core SignalR menyediakan API untuk membuat panggilan prosedur jarak jauh (RPC) server-ke-klien. RPC memanggil fungsi pada klien dari kode.NET Core sisi server. Ada beberapa platform yang didukung, masing-masing dengan SDK kliennya sendiri. Oleh karena itu, bahasa pemrograman yang dipanggil oleh panggilan RPC dapat bervariasi.
Sangat membantu untuk membiasakan diri Anda dengan terminologi umum yang terkait dengan SignalR. Dalam unit ini, Anda akan mempelajari komponen SignalR apa yang diperlukan dalam aplikasi server, versus komponen dalam aplikasi klien. Selain itu, Anda akan mendapatkan pemahaman tentang berbagai mekanisme komunikasi dupleks. SignalR merangkum beberapa protokol real-time, dan mengabstraksi kompleksitas setiap implementasi. Untuk informasi selengkapnya, lihat dokumentasi ASP.NET Core SignalR.
Istilah utama yang digunakan di SignalR dibahas di bagian berikut.
Transportasi
SignalR mendukung teknik berikut, atau transportasi, untuk menangani komunikasi waktu nyata:
- WebSockets
- Peristiwa yang Dikirim Server
- Polling Panjang
Urutan transportasi yang terdaftar di sini menandakan urutan fallback mereka yang anggun. Dengan kata lain, WebSockets lebih disukai daripada Peristiwa Yang Dikirim Server, dan Peristiwa Terkirim Server lebih disukai daripada Polling Panjang, meskipun salah satu transportasi ini dapat digunakan. SignalR secara otomatis memilih metode transportasi terbaik yang berada dalam kemampuan server dan klien. Untuk informasi selengkapnya, lihat spesifikasi resmi untuk Protokol Transportasi SignalR.
Server
Server bertanggung jawab untuk mengekspos titik akhir SignalR. Titik akhir memetakan ke subkelas Hub atau Hub<T>. Server dapat ada secara lokal, di penyedia cloud (seperti Azure), atau dengan Azure SignalR Service. Server mengekspos metode hub, yang dapat dipanggil dari klien, dan mengekspos peristiwa yang dapat dilanggan oleh klien. Ini dianggap prosedur jarak jauh.
Hub
Di SignalR, hub digunakan untuk berkomunikasi antara klien dan server. Hub adalah alur tingkat tinggi yang memungkinkan klien dan server untuk memanggil metode satu sama lain. Untuk tujuan ini, SignalR menangani pengiriman melintasi batas mesin secara otomatis. Anda dapat menganggap hub sebagai proxy antara semua klien yang terhubung dan server.
Protokol
Protokol SignalR adalah protokol untuk RPC dua arah melalui transportasi berbasis pesan. Salah satu pihak dalam koneksi dapat meminta prosedur pada pihak lain, dan prosedur dapat menghasilkan nol atau lebih hasil atau kesalahan. SignalR menyediakan dua protokol hub bawaan:
- Protokol teks yang didasarkan pada JSON, yang merupakan default.
- Protokol biner yang didasarkan pada MessagePack, yang umumnya membuat pesan yang lebih kecil daripada JSON.
Untuk menggunakan protokol MessagePack, baik server maupun klien harus memilih untuk mengonfigurasinya, dan baik server maupun klien harus mendukungnya. Terdapat protokol hub ketiga, yang disebut BlazorPack, tetapi digunakan secara eksklusif dengan aplikasi Blazor-Server. Hub tersebut tidak dapat digunakan tanpa model hosting Blazor-Server. Untuk informasi selengkapnya, lihat spesifikasi resmi untuk Protokol Hub SignalR.
Pengunjung perangkat seluler hingga langkah
Pengguna dalam sistem bertindak sebagai individu, tetapi juga dapat menjadi bagian dari grup. Pesan dapat dikirim ke grup, dan semua anggota grup diberi tahu. Seorang pengguna tunggal dapat terhubung dari beberapa aplikasi klien. Misalnya, pengguna yang sama dapat menggunakan perangkat seluler dan browser web dan mendapatkan pembaruan waktu nyata pada keduanya secara bersamaan.
Grup
Grup terdiri dari satu atau lebih koneksi. Server dapat membuat grup, menambahkan koneksi ke grup, dan menghapus koneksi dari grup. Grup memiliki nama tertentu, yang bertindak sebagai pengenal uniknya. Grup berfungsi sebagai mekanisme pencakupan untuk membantu menargetkan pesan. Artinya, fungsionalitas real time hanya dapat dikirim ke pengguna dalam grup bernama.
Koneksi
Koneksi ke hub diwakili oleh pengidentifikasi unik yang hanya diketahui oleh server dan klien. Terdapat koneksi tunggal per jenis hub. Setiap klien memiliki koneksi unik ke server. Artinya, satu pengguna dapat diwakili pada beberapa klien, tetapi setiap koneksi klien memiliki pengenalnya sendiri.
Klien
Klien bertanggung jawab untuk membuat koneksi ke titik akhir server melalui objek HubConnection
. Koneksi hub diwakili dalam setiap platform target:
- Klien .NET:
Microsoft.AspNetCore.SignalR.Client.HubConnection
- Klien JavaScript:
@microsoft/signalr.HubConnection
- Klien Java:
com.microsoft.signalr.HubConnection
Untuk informasi selengkapnya, lihat Platform yang didukung ASP.NET Core SignalR.
Saat instans koneksi hub berhasil dimulai, pesan mengalir bebas di kedua arah. Pengguna bebas untuk mengomunikasikan pemberitahuan ke server dan menerima notifikasi dari server. Klien adalah aplikasi yang terhubung, misalnya, browser web, aplikasi seluler, atau aplikasi desktop, antara lain.