接続されたクライアントにメッセージをプッシュするバックグラウンド プロセスを持つ方法を探しています。
私たちが取っているアプローチは、新しい接続が確立されるたびに (OnConnected)、mongo db に (後でフィルタリングするために) いくつかの要求メタデータと共に connectionId だけを保存することです。そして、イベントが発生すると (クライアントまたはバックエンド プロセスからトリガーされます)、workerrole (別のバックグラウンド プロセス) がそれらのイベントをリッスンし (メッセージングなどを介して)、イベントの詳細に基づいて、キャプチャされたメタデータを使用して接続されたクライアントをフィルター処理します。
アプローチは問題ないようですが、次の場合に問題があります
- シグナルサーバーがダウンする
- サーバーがバックアップされる前に、クライアントが切断されます(ブラウザを閉じるか、何でも)
signalr サーバーが復旧します
接続ステータスがわからないmongodbに接続が残っています
これを行うためのより良い方法があるかどうか疑問に思っています。目標は、接続されている特定のクライアントをターゲットにして、バックエンド サービス (ワーカー ロール) からメッセージをプッシュできるようにすることです。
ちなみに、サービスバスバックプレーンでスケールアウトオプションを使用しています