2

「Mapping ASP.NET SignalR Connections to Real Application Users」に関するこのブログ投稿のように、SignalR を使用して独自の高度な接続処理を行う方法を示す多くの記事があります。

これらのソリューションはすべて、OnDisconnect イベントに依存しています。

public override Task OnDisconnected()
{
    SignalRConnectionManager.RemoveConnection(Context.ConnectionId);
    return base.OnDisconnected();
}

これは、OnDisconnected イベントに依存できる限り機能します。アプリケーションがクラッシュ/再起動したり、サーバーが再起動したりすると、接続ごとに OnDisconnected イベントが発生しなくなります。

質問: データベースに接続があります。これらの接続の多くが古くなっていることはわかっています。SignalR で接続が古いかどうかを確認する可能性はありますか? 私は試した

Clients.Client[StaleConnectionId]

null または無効な接続 ID の場合の例外を期待しています。

助言がありますか?

4

1 に答える 1

2

「古い」接続をチェックする方法はありません。私はあなたの問題が何らかの方法でユーザーの状態を維持することにあると思います、そしてあなたはそれらをいつ期限切れにするか知りたいです。

SignalRには、アイドルアクティビティに基づいて接続を期限切れにするフェイルセーフがあるため、ユーザーを期限切れにすることができるアイドル機能をアプリケーションロジックに組み込むことをお勧めします。

作業の基礎が必要な場合に備えて、このロジックをShootRhttps://github.com/NTaylorMullen/ShootR )に実装しました。

お役に立てれば!

于 2013-02-25T00:13:15.367 に答える