2 Stimmen

Kann man einen Webbrowser asynchron benachrichtigen?

Ich versuche herauszufinden, ob es eine Möglichkeit gibt, wie ich einen Webbrowser über ein Ereignis von einem Webserver benachrichtigen kann.

Ich weiß, dass Sie mit Ajax asynchron eine Anforderung zur Aktualisierung eines Abschnitts einer Seite stellen können. Ich denke, ich könnte einen Timer haben, der regelmäßig nach Aktualisierungen fragt. Aber ich würde es vorziehen, ein Polling-Schema zu vermeiden, wenn möglich. Gibt es einen besseren Weg, um mit einer browserbasierten Lösung weiterzumachen?

3voto

Paul Dixon Punkte 286600

Überprüfen Sie "Komet" Techniken, bei denen Sie im Grunde eine Verbindung zu einem Server offen halten, der Ihnen Daten zurückschickt.

2voto

qualbeen Punkte 1446

Nun, Sie könnten versuchen, das "ignore-user-abort"-Flag zu setzen, und sicherstellen, dass das Skript nicht abbricht (while condition) sleep()). Nachdem Sie die zu übertragenden Informationen per Echo ausgegeben haben, geben Sie den Text per flush() an den Browser weiter.

Aber ich würde diese Lösung nicht empfehlen. Stattdessen: Gehen Sie mit Ajax, und verwenden Sie ein Polling-Schema. Die meisten aktuellen Rahmen unterstützen es out of the box.

2voto

Vasil Punkte 34398

Comet ist das, wonach Sie suchen. Es gibt einige js-Bibliotheken und http-Server, die die Nutzung erleichtern. Es basiert auf der Idee, Verbindungen mit einer bestimmten Anfrage offen zu halten und zurück zum Browser zu streamen, wenn der Server etwas zu streamen hat. Sie sollten sich der Tatsache bewusst sein, dass Browser in der Regel nur eine sehr begrenzte Anzahl von Verbindungen zu einer Domain offen halten können (typischerweise eine, glaube ich). Wenn Sie das ausprobieren möchten, schauen Sie sich das an:

Dojo-Kometd

js io

umkreist

apache tomcat advanced io

Wenn Sie sich für Erlang interessieren, sollten Sie sich dies ansehen:

http://yoan.dosimple.ch/blog/2008/05/15/

1voto

Joel Coehoorn Punkte 377088

Ich denke, ich könnte einen Timer einrichten, der regelmäßig nach Aktualisierungen fragt. Aber ich würde es vorziehen, ein Polling-Schema zu vermeiden, wenn möglich.

Pech gehabt: Genau das müssen Sie tun. Das Web basiert auf einem Anfrage/Antwort-Modell: 1 Anfrage vom Browser, 1 Antwort vom Server, und zwar immer in dieser Reihenfolge.

Das heißt, Sie müssen (und sollten wahrscheinlich auch nicht) dieses Abfragesystem nicht selbst erstellen. Sie können wahrscheinlich eine bestehende Implementierung finden, die die Details abstrahiert und es so aussehen lässt, als würde der Server den Client benachrichtigen.

0voto

Kyle Trauberman Punkte 24946

Sie können partielles Rendering verwenden. Ich würde auschecken dieser Artikel für weitere Informationen.

Hier ist weiterer Artikel zu diesem Thema.

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