2016-04-25 8 views
1

Web APIコントローラーに対してJQueryを使用してクライアントから呼び出しを行うアプリケーションがありますが、そのようなコントローラーから別のコントローラーが呼び出され、だから、ウェブAPIは、いくつかのサーバーにcallesを行い、保存したり、データを取得する(挿入、等。)ので、基本的には(二つの異なるソリューションと完全に独立し、依存関係のない)他のサーバー上のWeb APIと呼び出しサービスを使用するSignalR

Client 
Web API (this live in http://localhost:5020/) 
----------------- 
Some Server API here (this lives in http://localhost:4566) 
Data Layer 

SQL 

すべてのデータ・ロジックを行います。

他のサーバーのデータベースのいずれかに何かが保存されているときにSinalRを追加できる必要があります。どのように私はこれを設計することができますので、何か依存関係がないので、何かがクライアント側に保存された通知を受け取りますか?

受信側サーバーまたはクライアントサーバー上にHUBを追加しないでください。その動作方法を少し混乱させます。

私は何らかの説明をいただきたいと思います。

答えて

2

通常は、this answerで説明されている方法を使用します。

これにより、フロントエンド(JS)とバックエンド(C#)からも呼び出せるハブを持つことができます。 基本的にバックエンド(C#)呼び出しでは、ハブコンテキストを使用します。 SignalRチームhereでも説明しました。 (お使いのハブクラスの)

シンプルコード:

public class YourHubClass: Hub 
    private static IHubContext hubContext = GlobalHost.ConnectionManager.GetHubContext<YourHubClass>(); 

    // ... 
    public static void Send(string message) { 
     hubContext.Clients.All.addMessage(message); 
    } 
} 

は、今すぐあなたのコントローラ内の静的メソッドを呼び出すことができます。

YourHubClass.Send("Hello!"); 

を、クライアントがイベントによってメッセージが表示されますaddMessage(message)

関連する問題