2011-02-16 75 views
0

我寫了一個Adobe AIR應用程序,其行爲如下:在JavaScript中創建永久循環

用戶登錄並使用setTimeout創建永久循環。該循環執行HTTP請求,比較返回到全局變量的json md5字符串。如果這兩個值不同,dom將更新爲新內容。當用戶執行諸如發送回覆或刪除消息之類的其他動作時,執行無聲更新並且這個「暫停」循環。它基本上像一個簡單的電子郵件客戶端。

我這樣做的方式是不可靠的,並導致內存泄漏。我打算從頭開始重寫它,而且我不想最終成爲現在的同一條船。如果任何人都可以給我舉例說明他們如何做或給我任何建議,那將不勝感激。提前致謝!

回答

0

你不應該經常輪詢,而是使用一種稱爲「長輪詢」或「COMET」的技術。基本上,您發送的請求將保持打開狀態,直到由於更新的數據等或超時而產生響應。收到回覆後,您立即發送新的請求。

這可以節省大量的帶寬和服務器負載,因爲它大大減少了發送請求的數量。

+0

不幸的是,這不是我的選擇,雖然這是一個很好的建議。我目前正在通過抓取HTML頁面來檢索數據,我認爲我不需要處理超過1000個並行用戶,我有足夠的資源可以處理。 你可以給出如何從客戶端做循環的建議嗎? – Kyle 2011-02-17 06:38:54