ASP.NETで記述されたCometアプリケーションに取り組んでいます。アクティブな接続コンテキストの配列(HttpContext)があります。また、コレクションを定期的に繰り返し、その状態を確認する必要があるスレッドがあります。したがって、アプリケーションアーキテクチャはリクエストごとのスレッドではありません。
接続がアクティブである(リモートホストによって閉じられていない)ことを確認するための最良の方法は何ですか?
私はこれを見つけました:
context.Response.Write(' ');
context.Response.Flush();
if (!context.Response.IsClientConnected)
{
// ...
}
ただし、処理にスレッド時間がかかるため、これは適切なソリューションではありません(Flush()が操作をブロックしています)。多くの同時接続で非常に高速に動作し、ブロッキング操作を使用しないソリューションが必要です。
たぶん、この方法で接続を監視できるIISまたはASP.NET機能がいくつかありますか?