2009-04-17 52 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

相關問題