Ich versuche, eine einfache lange Umfrage in Angularjs durchzuführen - ich mache eine GET-Anfrage und es hängt sich an, bis der Server reagiert. Dann mache ich die Anfrage erneut und warte auf die nächste Antwort - und so weiter.Angularjs lang polling
Aus irgendeinem Grund ist der Code ziemlich unzuverlässig und vermisst etwa 80% der vom Server gesendeten Antworten.
Unten ist mein Code:
main.messages=[];
...
main.poll=function(){
$http.get('http://localhost:8080/message')
.success(function(data){
console.log(data);
main.messages.push(data);
main.poll();
})
.error(...)
};
Gibt es etwas offensichtlich, dass ich hier fehlt?
Der Server kann erkennen, dass der Browser verbunden ist, und der Server sendet zwar eine Antwort, aber der obige Code erhält keine Antwort (keine Konsolenausgabe und kein Fehler). Ich habe versucht, diese Anfrage mit Postboten (Chrome-Erweiterung) zu machen, und die lange Umfrage funktionierte perfekt, also denke ich, dass das Problem irgendwo hier ist.
update: Das Problem tritt nur bei Google Chrome und nur dann auf, wenn es mehr als einen Tab gibt, der die Polling-Funktion gleichzeitig ausführt. Beim Erstellen und Schließen neuer Tabs mit dem Long-Poll gibt es scheinbar zufällige Verhaltensweisen.
Dies ist nur die Hälfte der Geschichte, da Sie weder den Timeout-Code noch den Code für die Server-Seite angegeben haben. Daher ist eine zuverlässige Diagnose schwierig. –
der Timeout-Code? – jitin