Frage

Ich spiele ein wenig mit rohen XmlHttpRequestObjects um + Comet Lange Polling. (In der Regel, ich lasse GWT oder ein anderer Rahmen Griff für mich, aber ich will mehr darüber erfahren.)

Ich schrieb den folgenden Code:

function longPoll() {
  var xhr = createXHR(); // Creates an XmlHttpRequestObject
  xhr.open('GET', 'LongPollServlet', true);
  xhr.onreadystatechange = function () {
    if (xhr.readyState == 4) {

        if (xhr.status == 200) {
            ...
        }

        if (xhr.status > 0) {
            longPoll();
        }
    }
  }
  xhr.send(null);
}

...
<body onload="javascript:longPoll()">...

Ich wickelte den longPoll() Anruf in einer if-Anweisung, dass die Kontrollen für status > 0, weil ich festgestellt, dass, wenn ich die Seite verlassen (von woanders durchsuchen, oder durch erneuten Laden), ein letzter unnötiger Komet Anruf gesendet wird. [Und auf Firefox, es verursacht auch schwere Probleme, wenn eine Seite neu geladen zu tun, ich aus irgendeinem Grund noch nicht vollständig verstehen.]

Frage: Ist das status die richtige Art und Weise zu überprüfen, dieses Problem zu umgehen, oder gibt es eine bessere Lösung?

War es hilfreich?

Lösung

Meine aktuelle Antwort - bis zum Beweis der falsch -. Ist, dass die Lösung in Ordnung

Andere Tipps

Ich mag die Einfachheit dieser Schleife .... Ich denke, dass der Server-Seite Skript Schlaf hat oder atleast Schleife, bis es neue Daten vor seinem betrachtet langen Polling bekommt obwohl dies nur normaler Polling ist. Ich würde auch etwas zu überprüfen hinzufügen, wenn die reques allerdings versagt. Verpackung, dass in einem Try-Catch bloch sollte es tun

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top