私は、ゲートウェイといくつかのバックエンドサービスで構成されるWebアプリケーションを持っています。 ゲートウェイは自己ホスト型のOWINアプリケーションで、認証、承認、バックエンドへのAPI呼び出しのルーティングなどの問題を扱います。SignalRシンプルゲートウェイ
私はクライアントにデータをプッシュするために私のバックエンドサービスの一つでSignalRを使用することに興味があります。例えば。ユーザーは長時間実行されているクエリを開始し、利用可能になった時点でデータがクライアントにフィードバックされます。
(それは、このようなメッセージングのために設計されていなかったようですが)私は、「ゲートウェイ」のハブコード SignalR scaleout explanation
メッセージングメカニズムとして、スケールアウトの記事から、バックプレーンを使用するために管理:(ロジック唯一のバックエンド・コントローラ・コード
public override async Task OnConnected()
{
HttpClient client = new HttpClient()
{
BaseAddress = new Uri("http://localhost:8888/other/")
};
var result = await client.PostAsJsonAsync("signin", Context.ConnectionId);
await base.OnConnected();
}
)テスト目的のためのものである
[HttpPost]
[Route("signin")]
public void PostSignin([FromBody]string id)
{
StartPing(id);
}
public async Task StartPing(string id)
{
var context = GlobalHost.ConnectionManager.GetHubContext<FrontendHub>();
int i = 0;
while (true)
{
i++;
context.Clients.Client(id).showMessage("num " + i);
await Task.Delay(1000);
}
}
しかし、これは大きなエンタープライズアプリケーションであり、ゲートウェイがバックエンドサービスの実際のコードに依存することは望ましくありません。しかし、この例は、ゲートウェイとバックエンドサービスの両方に同じ名前のハブが定義されている場合にのみ機能します。一方
、私はゲートウェイで、このような専門的なコードを配置する必要性を回避しようとしている一方で、私は、実際の関数名とパラメータを使用する能力を活用したいと思います。私は単一の機能を備えた「マスターハブ」を望んでいません。
これを行う方法はありますか?