Próbuję wykonać proste żądanie długiej ankiety w Angularjs - wykonuję żądanie GET i trwa ono dopóki serwer nie odpowie. Następnie ponownie zgłoszę żądanie i czekam na kolejną odpowiedź - i tak dalej.Długie sondowanie Angularjs
Jednak z jakiegoś powodu kod jest dość niewiarygodny i pomija około 80% odpowiedzi wysłanych z serwera.
Poniżej jest mój kod:
main.messages=[];
...
main.poll=function(){
$http.get('http://localhost:8080/message')
.success(function(data){
console.log(data);
main.messages.push(data);
main.poll();
})
.error(...)
};
Czy jest coś oczywiste, że jestem tutaj brakuje?
Serwer może wykryć, że przeglądarka jest podłączona, a serwer wysyła odpowiedź, ale powyższy kod nie otrzymuje odpowiedzi (brak wyjścia konsoli i brak błędu). Próbowałem wysyłać tę prośbę z listonoszem (rozszerzenie chrome), a długa ankieta działała doskonale, więc myślę, że problem jest gdzieś tutaj.
aktualizacja: problem występuje tylko w przeglądarce Google Chrome i tylko wtedy, gdy jednocześnie jest wyświetlana więcej niż jedna zakładka z długimi głosowaniami. Istnieje pewne pozornie przypadkowe zachowanie podczas tworzenia i zamykania nowych kart za pomocą długiej ankiety.
To tylko połowa historii, ponieważ nie uwzględniłeś kodu limitu czasu lub kodu po stronie serwera, ponieważ trudno go zdiagnozować w sposób wiarygodny. –
kod limitu czasu? – jitin