Я работаю над Comet приложением, написанным на ASP.NET. Существует массив активных контекстов соединения ( HttpContext ). И есть поток, который должен периодически перебирать коллекцию и проверять их состояние. Таким образом, архитектура приложения не является поток-на-запрос.
Как лучше всего убедиться, что соединение активно (не закрыто удаленным хостом)?
Я нашел это:
context.Response.Write(' ');
context.Response.Flush();
if (!context.Response.IsClientConnected)
{
// ...
}
Но это не очень хорошее решение, потому что для его обработки требуется время потока (Flush () блокирует операцию). Мне нужно решение, которое работает очень быстро для многих одновременных соединений и не использует операции блокировки.
Может быть, есть какая-то функциональность IIS или ASP.NET, которая позволяет отслеживать соединения таким образом?