2つのsignalRコアハブ間の通信
独自のSignalRCore C#ハブ(CおよびD)を備えた2つのsignalR Core Typescriptアプリ(AおよびB)があります。
いいえ、BのAから何かをトリガーしたいと思います。私の計画は、トリガーメッセージをAからCに送信し、次にCがそれをDにリダイレクトしてBに送信することでした。他の方向でも同じことが可能です。
ハブは互いに独立しているため、一方のハブをもう一方のハブの一部にすることはできません。私が思いついた唯一の解決策は、2つのSignalR Core C#クライアントを使用してハブ間で通信することですが、それは大きなオーバーヘッドのようです。それとも行く方法ですか?
回答
独自のSignalRCore C#ハブ(CおよびD)を備えた2つのsignalR Core Typescriptアプリ(AおよびB)があります。
いいえ、BのAから何かをトリガーしたいです。
上記の要件を達成するために、以下の可能なアプローチを参照できます。
アプローチ1:実装を変更し、既存の機能を単一のハブクラスにマージすると、SignalR Typescriptクライアントアプリ(AおよびB)を同じハブサーバーに接続して相互に通信させることができます。
アプローチ2:クライアントユーザーごとにSignalR Typescriptクライアントアプリ(AおよびB)でハブCとハブDの両方への接続を確立し、TypescriptクライアントアプリAを使用するユーザーがTypescriptクライアントアプリBのユーザーとも通信できるようにします。
アプローチ3:前述のように、Microsoft.AspNetCore.SignalR.Clientパッケージをインストールし、SignalR .NETクライアントロジックをハブサーバープロジェクト(AおよびB)に実装します。これにより、サーバーとSignalR.NETクライアントの両方として機能します。
アプローチ4: @ Kiril1512で述べたように、キューベース(またはサービスバスベースなど)のジョブである可能性のある別のプロジェクトにSignalR.NETクライアントロジックを実装できます。SignalR TypescriptクライアントアプリAのユーザーがハブDに接続しているSignalRTypescriptクライアントアプリBのユーザーと通信する場合、ハブCに特定のメッセージを送信して新しいキューメッセージを追加すると、そのジョブがトリガーされ、ハブメソッドが呼び出されます。以下のように、SignalRTypescriptクライアントアプリBから特定のユーザーにメッセージをプッシュするハブサーバーD。

まず第一に、これは意見の質問なので、多分閉鎖されるでしょう。
しかし、より良いアプローチはService Bus
、イベントベースのコミュニケーションのようなものを使用して実装することだと思います。したがって、Aで何かが発生し、Cでハブメソッドを呼び出してから、Dにイベントを送信するとsignalR
、Aを介してトリガーされます。イベントバスを使用すると、たとえば、それらのイベントを受信して実行できる別のハブ(E)を追加するオプションが追加されます。他の何か。