2012-01-13 67 views
1

我正在開發一個使用phonegap和jquerymobile的webworks應用程序。我使用soapclient.js來創建soap請求到我的後端服務器。我們正面臨超時問題,在詳細調查過程中,我們注意到第11個Ajax請求一直沒有迴應。爲了把事情放在正確的位置,我們重複測試,重複相同的調用,以便我們知道特定請求的工作原理。BlackBerry OS6 WebWorks將ajax請求限制爲10,是否存在連接泄漏?

我們使用低端自創的xmlhttprequest對象,直到send()調用沒有錯誤。 onreadystate更改偵聽器不會被呼叫第11次調用。

有時當我們等待足夠長的時間時,第11次通話在大約5分鐘左右就獲得了榮譽,這讓我相信在BlackBerry Browserfield中存在連接泄漏。

我懷疑有10個連接(非並行)的限制可以進行。在BB垃圾清理觸發進入某個時間之後,清除了幾個舊連接,等待在隊列中的新連接被執行。

更多信息

  1. 我已經從這段等待期間, 服務器沒有收到
  2. 我已經驗證了這 請求服務器日誌覈實情況,不論我是否使用Wi -Fi或GPRS
  3. 應用程序再次開始工作,如果我關閉並重新打開它,但只有直到 前10個請求

我試圖中止請求,如果它通過調用abort()並將其設置爲null來超過我的超時期限。但即使如此,如果我不等待一段時間,我也無法提出第11個要求。

我會相信任何其他原因,如JavaScript等待UI線程等,如果這種行爲將是隨機的。但它在第11次請求中可重複性爲99%,我已多次重新檢查代碼以查看是否有任何變量或計數從應用程序獲知。警報工作正常,直到.send但回調不被調用。

我現在正在嘗試創建一個非常簡單的應用程序,它使ajax調用來查看這種行爲是特定於我的應用程序還是它的平臺約束,但如果任何人有任何此類以前的經驗,請分享。

回答

0

最後,經過一天的努力,我們發現這是由於將javascript函數分配給硬件密鑰而發生的。由於我們在不同的jQuery頁面下使用不同的菜單項,菜單按鈕在不同的活動上綁定了不同的javascript函數,這導致了BB WebWorks應用程序中的內存泄漏。當我們用一個全局變量綁定菜單硬件按鈕並且繼續替換它的賦值而不是一次又一次地調用綁定時,我們解決了它。