5

私のWebアプリケーションには、 SignalRハブ上に構築されたチャットアプリモジュールがあります。

アプリには1000人以上の同時ユーザーがいます。チャットモジュールを別のアプリプールでホストして、メインアプリケーションから分離し、SignalRがメインアプリケーションのボトルネックにならないようにします。

どうしたらいいのかわからない。ハブクラスを使用してメインWebプロジェクトに関連付けられた単純なチャットシステム(Googleトークによく似ています)を構築しました。クライアント側のコードは、アプリケーション全体で共通であるため、サイトマスターに存在します。

また、Hubクラスの外部でHubメソッドを呼び出せるようにしたい。たとえば、管理者が管理パネルからユーザーに特定のタスクを割り当てる場合があります。そのため、サービス操作(タスクの割り当て)が正常に完了した後のControllerメソッドから、その特定のユーザーにSignalRメッセージを送信したいと思います。両方の目標を達成するために、ハブ接続または持続的接続を使用する必要がありますか?別のポートでSignalRをホストしますか?これについてのガイダンスをいただければ幸いです。ありがとう!

4

1 に答える 1

3

必ずしなければならないというわけではありませんが、別れたいという気持ちは理解できます。これを行うには、MVC アプリケーションが SignalR クライアント自体であるかのようにハブ メソッドを呼び出す必要があります。これを行うには、同じハブに個別のメソッドを配置するか、この種のアプリ間通信専用に存在するセカンダリ ハブを追加します。

別の方法で保護できるため、2 つ目のハブを用意するという後者のアプローチを使用することになるでしょう。このルートに進む場合はHubContext、プライマリ ハブの を取得し、必要なコールを発信したり、必要な信号を発信したりするだけです。それは次のようになります。

public MyInterAppCommunicationHub : Hub
{
    public void SendSystemAlert(string message)
    {
       HubContext myPrimaryHubContext = GlobalHost.ConnectionManager.GetHubContext<MyPrimaryHub>();

       myPrimaryHubContext.Clients.systemAlert(message);
    }
}
于 2012-08-08T16:09:39.893 に答える