Redis スケールアウト (とされる) とハブで SignalR を使用する Web アプリがあり、正常に動作します。接続されているすべてのクライアントにメッセージを送信できるようにするには、worker ロールが必要ですが、その方法がわかりません。また、ワーカーが定期的に実行するメソッドをすぐに実行するテスト アプリとして機能するコンソール アプリケーションもあります。
ワーカー アプリまたはコンソール アプリ内で Web サーバーをホストするのは奇妙に思えますが、これまでのところ、ほとんどの場合はそうでした。Web アプリとの会話も奇妙に思えます。メッセージを Redis に投稿するだけで、すべてのサブスクライバーがそれを受け取ることができるはずではありませんか?
これは私が使用しているコードです。UseRedis
呼び出しとhandleExecutedAction
ほとんどそのままの内容を Web アプリからコピーしました。スローも何もしませんが、メッセージは Web クライアントに届きません。
GlobalHost.DependencyResolver.UseRedis(new RedisScaleoutConfiguration("...", "..."));
var hubContext = GlobalHost.ConnectionManager.GetHubContext<WebUI.EventHub>();
hubContext.Clients.All.handleExecutedAction(new Action { Type = "testing" });
このページを見つけた後、このメソッド (コンテキスト) を使用しました。他のメッセージは Web アプリから送信され、コンソール アプリからは何も送信されないため、クライアントが機能していることはわかっています...