2011-04-29 105 views
0
protected void Page_Load(object sender, EventArgs e) 
{ 
    Response.Buffer = false; 

    while (true) 
    { 
     Response.Write(Delimiter + DateTime.Now.ToString("HH:mm:ss.FFF")); 
     Response.Flush(); 

     // Suspend the thread for 1/2 a second 
     System.Threading.Thread.Sleep(500); 
    } 

    // Yes I know we'll never get here, it's just hard not to include it! 
    Response.End(); 
} 

當Response.Flush()被執行,新的網頁被髮送到客戶端 的,而塊將服務器 當新maeeage到達客戶端上運行下去,有爲新數據刷新 繼續保持同一位置的可行性如何?不應該創建新的Page對象嗎?。我不明白這一點

回答

1

有與你所描述哪幾個問題?

1)你所描述的誤匹配的客戶端和服務器代碼。那裏的服務器代碼只適用於永久掛起的單個AJAX請求,並在客戶端得到通知,但未啓動新請求。然而,在您的評論中,您描述了一個客戶確實開始了一個新請求。這兩個概念不會一起工作。

2)詳細闡述第1點,請求永不結束意味着大多數瀏覽器永遠不會看到它。 「典型的」AJAX請求在整個內容到達之前不會改變狀態,因此請求將永遠掛起。您必須結束請求,或者使用一個XHR請求來改變狀態,因爲每個塊都從服務器刷新,只有在某些瀏覽器中才有效。

3)即使1)工作,代理等最終會終止請求。他們不喜歡永遠坐在附近的請求。

4)這是一個阻塞的同步請求,它會瘋狂地吃掉服務器資源。在它發生災難性故障之前,它不會超出線程池限制。

所以,你在這裏給出的例子沒有意義:)。