Komunikasi antara dua signalR Core Hubs
Saya memiliki dua Aplikasi SignalR Core Typecript (A & B) dengan SignalR Core C # Hub (C & D) mereka sendiri.
Tidak, saya ingin memicu sesuatu dari A di B. Rencana saya adalah mengirim pesan pemicu dari A ke C, lalu C mengalihkannya ke D dan mengirimkannya ke B. Hal yang sama juga bisa dilakukan ke arah lain.
Hub tidak bergantung satu sama lain, jadi menjadikan satu Hub sebagai bagian dari yang lain tidak berhasil untuk saya. Satu-satunya solusi yang saya temukan adalah dengan menggunakan dua Klien SignalR Core C # untuk berkomunikasi antar Hub, tetapi itu tampak seperti overhead besar. Ataukah cara untuk pergi?
Jawaban
Saya memiliki dua Aplikasi SignalR Core Typecript (A & B) dengan SignalR Core C # Hub (C & D) mereka sendiri.
Tidak, saya ingin memicu sesuatu dari A di B.
Anda dapat merujuk pada kemungkinan pendekatan berikut untuk mencapai persyaratan di atas.
Pendekatan 1: ubah implementasi Anda dan gabungkan fungsionalitas yang ada ke dalam kelas Hub tunggal, lalu Anda dapat membuat aplikasi klien (A & B) SignalR menyambung ke server hub yang sama dan berkomunikasi satu sama lain.
Pendekatan 2: buat koneksi ke Hub C dan Hub D pada aplikasi klien SignalR Typescript (A & B) untuk setiap pengguna klien, sehingga pengguna yang menggunakan aplikasi klien Typecript A juga dapat berkomunikasi dengan pengguna dari aplikasi klien Typecript B.
Pendekatan 3: seperti yang Anda sebutkan, instal paket Microsoft.AspNetCore.SignalR.Client dan terapkan logika klien SignalR .NET pada proyek server Hub (A & B), yang akan membuatnya bertindak sebagai server dan klien SignalR .NET.
Pendekatan 4: seperti yang disebutkan @ Kiril1512, dapat mengimplementasikan logika klien SignalR .NET dalam proyek terpisah yang mungkin merupakan pekerjaan berbasis antrian (atau berbasis servicebus dll). Jika pengguna dari aplikasi klien SignalR Typecript A ingin berkomunikasi dengan pengguna dari aplikasi klien SignalR Typescript B yang terhubung ke Hub D, dia dapat mengirim pesan tertentu ke Hub C untuk menambahkan pesan antrian baru, kemudian tugas itu akan memanggil metode Hub Server hub D untuk mengirim pesan ke pengguna tertentu dari aplikasi klien SignalR Typescript B, seperti di bawah ini.

Pertama-tama, ini adalah pertanyaan opini jadi mungkin akan ditutup.
Tapi saya percaya pendekatan yang lebih baik adalah menggunakan sesuatu seperti Service Bus
dan mengimplementasikan komunikasi berbasis acara. Jadi sesuatu terjadi di A dan Anda memanggil metode hub di C, kemudian mengirim acara ke D dan itu akan memicu melalui signalR
A. Menggunakan bus acara akan menambahkan opsi untuk menambahkan, misalnya hub lain (E) yang dapat menerima acara tersebut dan melakukan sesuatu yang lain.