2016-06-13 83 views
1

SignalRを使用すると、Webサーバーとの長期間の接続を維持するように設計されています。しかし、私は、ASP.Netセッションの期限が切れた後も、SignalR接続がWebサーバーとのオープンな接続を維持するシナリオを持っています。これは、クライアントもサーバーもデータを送信していない場合でも発生します。SignalR接続でセッションタイムアウトを守る方法

Asp.netセッションが終了すると、SignalR接続が終了し、サーバー上の接続が解放されるように設定するにはどうすればよいですか?

これは、Webサーバーがロードバランサ上で実行され、ローテーションからサーバーを取り外すときに、アクティブなセッションの数を表すために#現在の接続が必要であり、まだ蹴っているユーザーがブラウザを開いたままにしているためです。

+0

私は、セッションがアクティブであることを保証するためにハブ許可メカニズムに触れることについて考えましたが、それは一種のクルージングです。特にこれは認証が全く必要ないためです。私が持っていたもう1つのアイデアは、クライアントがセッション状態を監視するか、セッション終了時にリダイレクトすることで接続を終了させることでしたが、適切な解決策よりも回避策のように思えます。 –

答えて

1

SignalR Serverでは、特定のクライアント接続の切断を許可していません(これは非常に便利です)。クライアントはそれを行う責任があります。

この問題を回避するには、すなわち、そこからクライアントおよび切断時にイベントリスナーを追加するために、次のようになります(?ConcurrentDictionary)

明らか
hubProxy.On<string>("YouAreUselesLetMeAlone", _ => connection.Dispose()); 

、あなたが関係を必要とするこの作品を作るためにasp.netセッションの< - > signalr接続のため、asp.netセッションが終了したときに正しいクライアントでこのメソッドを呼び出すことができます。

関連する問題