2009-04-17 82 views
1

我使用ASP.NET编写的Comet应用程序。有一组活动的连接上下文(HttpContext)。还有一个线程应该周期性地遍历集合并检查它们的状态。所以应用程序架构不是线程每请求。检查连接在ASP.NET中处于活动状态

检查连接是否处于活动状态(未由远程主机关闭)的最佳方法是什么?

我发现这一点:

context.Response.Write(' '); 
context.Response.Flush(); 

if (!context.Response.IsClientConnected) 
{ 
    // ... 
} 

但由于它需要一个线程的处理时间(同花顺()被阻塞操作),这不是一个很好的解决方案。我需要对许多并发连接非常快速的解决方案,并且不要使用阻塞操作。

也许有一些IIS或ASP.NET功能允许以这种方式监视连接?

回答

2

简短的答案是......没有。 ASP.NET知道为IsClientConnected返回false的唯一方法是如果用户对服务器进行了不同的调用,或者之前调用了Response.Close。根据我的经验,用户很可能关闭连接,并仍然使IsClientConnected返回true。考虑一下正在发生的底层HTTP通信,你可以看到为什么。

你想完成什么?

+0

这是一个使用Flash客户端的聊天服务。这是确定客户端何时下线的方法。 – alexey 2009-04-18 14:14:40

相关问题