2011-01-17 3 views
0

Ich habe eine Anwendung, die eine offene JQuery Ajax-Verbindung verwendet, um Long-Polling/Comet-Behandlung von Updates zu tun.Umgang mit serverseitigen abgebrochenen Long-Poll/Comet-Updates in JQuery

Manchmal verlieren der Browser und der Server diese Verbindung (Server stürzt ab, Netzwerkprobleme usw.).

Ich möchte, dass der Client erkennt, dass das Update abgestürzt ist und informieren Sie den Benutzer, um die Seite zu aktualisieren.

Es schien ursprünglich, dass ich zwei Möglichkeiten hatte:

  • behandeln den 'Fehler' Zustand in dem JQuery Ajax-Aufruf
  • den 'vollständig' Zustand in dem JQuery Ajax-Aufruf behandeln

Bei Tests scheint jedoch keine dieser Bedingungen ausgelöst zu werden, wenn die Server die Abfrage abbricht.

Wie kann ich meinen Client verstehen, dass der Server weggegangen ist?

Antwort

1

Ist es nicht möglich, eine setInterval() Funktion hinzuzufügen, die alle paar Sekunden oder Minuten ausgeführt wird? Auf diese Weise können Sie ein Skript auslösen, das prüft, ob der Server noch aktiv ist, und falls nicht, die Kometenverbindung zurücksetzen. (Ich weiß jedoch nicht genau, was Sie für das Long-Polling verwenden, daher weiß ich nicht, ob es möglich ist, diese Verbindung ohne Neuladen der Seite wiederherzustellen. Wenn nicht, können Sie dem Benutzer weiterhin eine Nachricht anzeigen).

So etwas wie folgt aus:

var check_server = setInterval(function() { 
    // run server-check-script... 
    // if (offline) { // reset } 
}, 60000);
+0

, die funktionieren würde - es scheint nur ein bisschen hässlich, wenn ich eine Verbindung, die abgebrochen wird, und ich will es nur mir sagen, es ist verschwunden. –

+0

Nun, wenn die Verbindung stirbt, so tut es ihre Fähigkeit, Ihnen zu sagen, dass es so getan hat :) – Alec

+0

Ja, aber der Browser wird gesagt, dass die lange Poll-Verbindung offen ist und Firebug markiert die Abfrage als rot in der JavaScript-Konsole Jemand sagt jemandem, dass er gegangen ist. Ich fühle mich einfach ausgelassen :( –

Verwandte Themen