我在用 ASP.NET 编写的Comet应用程序上工作。有一组活动连接上下文(HttpContext)。并且有一个线程应该定期遍历集合并检查它们的状态。所以应用程序架构不是每个请求的线程。
检查连接是否处于活动状态(未被远程主机关闭)的最佳方法是什么?
我找到了这个:
context.Response.Write(' ');
context.Response.Flush();
if (!context.Response.IsClientConnected)
{
// ...
}
但这不是一个好的解决方案,因为它需要一个线程时间来处理(Flush() 是阻塞操作)。我需要对许多并发连接运行非常快并且不使用阻塞操作的解决方案。
也许有一些 IIS 或 ASP.NET 功能允许以这种方式监视连接?