Bagikan melalui


Internal Azure SignalR Service

Azure SignalR Service dibangun di atas ASP.NET Core SignalR. Ini juga mendukung ASP.NET SignalR dengan mengimplementasikan kembali protokol data ASP.NET SignalR di atas kerangka kerja ASP.NET Core.

Anda dapat dengan mudah memigrasikan ASP.NET Core SignalR lokal atau aplikasi ASP.NET SignalR untuk bekerja dengan SignalR Service, dengan mengubah beberapa baris kode.

Diagram menjelaskan arsitektur umum saat Anda menggunakan SignalR Service dengan server aplikasi Anda.

Perbedaan dari aplikasi Core SignalR ASP.NET yang dihosting sendiri juga dibahas.

Sistem

Koneksi server aplikasi

Server aplikasi ASP.NET Core SignalR yang dihost sendiri mendengarkan dan menghubungkan klien secara langsung.

Dengan SignalR Service, server aplikasi tidak lagi menerima koneksi klien persisten, sebagai gantinya:

  1. Titik akhir negotiate diekspose oleh SDK Azure SignalR Service untuk setiap hub.
  2. Titik akhir menanggapi permintaan negosiasi klien dan mengalihkan klien ke SignalR Service.
  3. Klien terhubung ke SignalR Service.

Untuk informasi selengkapnya, lihat Sambungan klien.

Setelah server aplikasi dimulai:

  • Untuk ASP.NET Core SignalR: Azure SignalR Service SDK membuka lima koneksi WebSocket per hub ke SignalR Service.
  • Untuk ASP.NET SignalR: Azure SignalR Service SDK membuka lima koneksi WebSocket per hub ke SignalR Service dan satu koneksi WebSocket per aplikasi.

Jumlah awal koneksi default ke 5 dan dapat dikonfigurasi menggunakan InitialHubServerConnectionCount opsi di SignalR Service SDK. Untuk informasi selengkapnya, lihat konfigurasi.

Saat server aplikasi terhubung ke layanan SignalR, layanan Azure SignalR dapat mengirim pesan penyeimbangan beban ke server. Kemudian, SDK memulai koneksi server baru ke layanan untuk performa yang lebih baik. Pesan ke dan dari klien dikalikan ke dalam koneksi ini.

Koneksi server terus terhubung ke SignalR Service. Jika koneksi server terputus karena masalah jaringan:

  • Semua klien yang dilayani oleh sambungan server ini terputus. Untuk informasi selengkapnya, lihat Transmisi data antara klien dan server.
  • Server secara otomatis menghubungkan kembali klien.

Sambungan klien

Saat Anda menggunakan SignalR Service, klien terhubung ke layanan alih-alih server aplikasi. Ada tiga langkah untuk membuat koneksi persisten antara klien dan SignalR Service.

  1. Klien mengirim permintaan negosiasi ke server aplikasi.

  2. Server aplikasi menggunakan Azure SignalR Service SDK untuk mengembalikan respons pengalihan yang berisi URL SignalR Service dan token akses.

    • Untuk ASP.NET Core SignalR, respons pengalihan umum terlihat seperti:
      {
          "url":"https://test.service.signalr.net/client/?hub=chat&...",
          "accessToken":"<a typical JWT token>"
      }
      
    • Untuk ASP.NET SignalR, respons pengalihan umum terlihat seperti:
      {
          "ProtocolVersion":"2.0",
          "RedirectUrl":"https://test.service.signalr.net/aspnetclient",
          "AccessToken":"<a typical JWT token>"
      }
      
  3. Setelah klien menerima respons pengalihan, klien menggunakan URL dan token akses untuk terhubung ke SignalR Service.

Untuk mempelajari selengkapnya tentang ASP.NET Core SignalR, lihat Protokol Transportasi.

Transmisi data antara klien dan server

Ketika klien terhubung ke SignalR Service, runtime layanan menemukan koneksi server untuk melayani klien ini.

  • Langkah ini hanya terjadi sekali, dan merupakan pemetaan satu-ke-satu antara koneksi klien dan server.
  • Pemetaan dipertahankan di SignalR Service hingga sambungan klien atau server terputus.

Pada titik ini, server aplikasi menerima peristiwa dengan informasi dari klien baru. Sambungan logis ke klien dibuat di server aplikasi. Saluran data dibuat dari klien ke server aplikasi, melalui SignalR Service.

SignalR Service mengirimkan data dari klien ke server aplikasi pemasangan. Data dari server aplikasi dikirim ke klien yang dipetakan.

SignalR Service tidak menyimpan atau menyimpan data pelanggan, semua data pelanggan yang diterima dikirimkan ke server target atau klien secara real time.

Azure SignalR Service bertindak sebagai lapisan transportasi logis antara server aplikasi dan klien. Semua sambungan persisten diturunkan ke SignalR Service. Akibatnya, server aplikasi hanya perlu menangani logika bisnis di kelas hub, tanpa khawatir tentang koneksi klien.

Langkah berikutnya

Untuk mempelajari selengkapnya tentang Azure SignalR SDK, lihat: