我想在Angularjs中執行一個簡單的長輪詢請求 - 我發出GET請求,並掛起直到服務器響應。然後我再次發出請求並等待下一個響應 - 等等。Angularjs長輪詢
但是,由於某種原因,該代碼是相當不可靠的,錯過80%左右,從服務器發送的響應。
下面是我的代碼:
main.messages=[];
...
main.poll=function(){
$http.get('http://localhost:8080/message')
.success(function(data){
console.log(data);
main.messages.push(data);
main.poll();
})
.error(...)
};
有沒有,我很想念這裏的東西明顯?
服務器可以檢測到瀏覽器被連接,並且服務器不發送響應而上面的代碼沒有得到響應(無控制檯輸出和無差錯)。我試着用郵差(擴展名爲chrome)提出這個請求,並且長時間輪詢在那裏完美工作,所以我認爲問題出現在這裏。
更新:該問題僅在谷歌瀏覽器中出現,並且只有當多個選項卡同時執行長輪詢時纔會發生。在創建和關閉新的選項卡時,有一些看似隨機的行爲。
這只是故事的一半,因爲您沒有包含超時代碼或服務器端代碼,因此很難可靠地進行診斷。 – 2014-11-25 10:16:19
超時碼? – jitin 2014-11-25 10:19:41