6 Stimmen

Wie lange kann ich warten, bevor ich auf einen Browser reagiere, ohne eine Zeitüberschreitung zu erhalten?

Ich mache eine Chat-Anwendung, die mit Long-Polling arbeitet, um einen "Push" vom Server zum Client zu emulieren.

Im Grunde fragt der Browser nach Updates, und ich antworte, wenn es etwas Neues gibt. Ansonsten halte ich die Verbindung offen, ohne zu antworten, bis es etwas zurückzusenden gibt.

Wenn nun 30 Sekunden verstrichen sind und ich nichts gesendet habe, sende ich eine Antwort, die im Wesentlichen "NoNews" lautet, und der Client fragt erneut ab.

Ich möchte diese Verbindung natürlich so lange wie möglich aufrechterhalten, ohne zu antworten, bevor der Browser einfach eine Zeitüberschreitung verursacht und mich aufgibt... Ich habe keine gute Dokumentation darüber gefunden, was die Client-Timeout für jeden Browser ist, und es scheint nicht wie es ist das gleiche für alle von ihnen...

Hat jemand von Ihnen einen Antrag auf ein Langzeit-Polling gestellt?
Haben Sie eine Idee, was die längste sichere Zeitüberschreitung sein könnte?

Gracias.

2voto

Tim Sylvester Punkte 22343

Der Browser sollte eine Zeitüberschreitung bei einer XHR erkennen und eine weitere Anfrage stellen.

Aktualisierung:

Die Erkennung von Timeouts bei einer XHR ist tatsächlich kompliziert, da sie aus irgendeinem Grund nicht eingebaut ist. Natürlich müssen Sie auch mit 502/503-Antworten usw. umgehen.

1voto

ZZ Coder Punkte 72742

Die Lesezeit ist von Browser zu Browser unterschiedlich. Dies sind zum Beispiel die Standardwerte für den IE,

Internet Explorer 4.0 and Internet Explorer 4.01 - 5 minutes
Internet Explorer 5.x and Internet Explorer 6.x - 60 minutes
Internet Explorer 7 and Internet Explorer 8 - 60 minutes

Wie Sie sehen können, wird sie mit der Zeit größer.

Bei langen Abfragen ist die Zeitüberschreitung Ihr Freund. Sie sollten sie ausnutzen, anstatt sie zu meiden. Timeout bedeutet, dass Sie die längste mögliche Abfrage mit dem Browser durchführen. Timeout ist ein Fehler, den Sie auch ohne langes Polling behandeln müssen, so dass es keine zusätzliche Belastung gibt.

Vielleicht möchten Sie meine Antwort auf diese Frage lesen,

Abfrage eines HTTP-Servers vom J2ME-Client aus

Auch wenn es sich um einen mobilen Client handelt, gelten die meisten Regeln auch für lange AJAX-Abrufe. Insbesondere denke ich, dass Sie von einem Benachrichtigungssystem profitieren werden, so dass Long Polling nur für Ereignisbenachrichtigungen verwendet wird und alle Inhalte weiterhin normal abgerufen werden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X