私は、サーバーAで実行されるASP.NET MVCアプリケーションと、サーバーBで実行されるいくつかのWebサービスを持っています。私は、サーバーAでSignalRを使用しているリアルタイム通知を実装しました。サーバーB(メインWebアプリケーション)から提供されるビューにメッセージを送信できるようにする必要があります。したがって、私はチュートリアルhereにRedisバックプレーンを関与させようとしています。サーバーAでの私のスタートアップでSignalRでRedisを使用する
、私は次のよう追加しました:ここ
GlobalHost.DependencyResolver.UseRedis("localhost", 6379, string.Empty, "abc");
app.MapHubs();
、私は「て、myAppは、」チャンネルを示していると仮定し、私はRedisのコンソール上でpublish abc "hello world"
を実行すると、私は加入者を見ることができますカウントは1として返されましたが、私はSignalRハブがチャンネルとどのようにやり取りするかを理解することができません。サーバー/ビューでメッセージを受け取る場所はどこですか? 1つの赤ちゃんチャンネルにのみ登録できますか?特定のチャンネルを購読するように動的に設定することはできませんか?
EDIT:abc
に登録すると、redisコンソールでSignalRを使用して実装されたチャットアプリケーションから送信されたメッセージが表示されます。
また、私はredisチャネルからメッセージを受信する際に、自分自身のredisリスナを実装しました。これは、signalRハブ機能を呼び出します。私はこれを行うには別の方法が必要であると確信しています。私はredisバックプレーンが私を助けることができるが、それがどのように動作するのかわからないことを望んでいる。
一つの簡単なソリューションを提供します。 サーバーBの希望のチャネルにメッセージをパブリッシュします。サーバーAのチャネルをサブスクライブし、メッセージを手動でsignalRハブにプッシュします。 –
これは馬鹿に聞こえるかもしれませんが、わかりやすく理解するのに役立ちます。これは、表示するすべてのメッセージがサーバーAを介してのみ送信され、サーバーBは直接送信されないことを意味しますか?ここでsignalR.redisの使用は何ですか? – labyrinth
これを確認してください: - http://gigi.nullneuron.net/gigilabs/backplane-signalr-scaleout-with-redis/また以下もあります: - http://www.asp.net/signalr/overview/performance/scaleout -with-redis –