molily: AJAX - mehrere Verbindungen gleichzeitig?

Beitrag lesen

Hallo,

Können mehrere Verbindungen gleichzeitig offen sein?

Verbindungen bei HTTP sind nicht »offen«, es HTTP ist ein bloßes Frage-Antwort-Protokoll. Dabei kann natürlich die Zeit zwischen Clientanfrage und Serverantwort recht groß sein, aber beliebig ist sie nicht.

Eine Web- Seite ruft per Ajax neue Informationen ab. Die gibt es aber im Moment nicht, vielleicht erst in einer halben Stunde *). Es geht dabei um Nachrichten von einem User zu einem anderen User.

In der Zwischenzeit werden durch Useraktionen jedoch andere Ajax- Aktivitäten fällig, die kurzfristig beantwortet werden.

Du hast da wohl was missverstanden.

Du kannst keine Verbindung über eine halbe Stunde offen halten. Selbst wenn ein PHP-Script länger als eine halbe Stunde laufen würde und derzeit nichts an den Browser sendet - es funktioniert nicht, dass der Browser eine halbe Stunde auf eine Antwort des Scriptes wartet.

Nebenan:
»Das ständig wiederholte Nachfragen beim Server, ob es etwas neues gibt, ersetzt auch AJAX nicht - HTTP kennt kein PUSH, sondern nur PULL, und das bleibt auch mit AJAX so.«

Sprich, du kannst mit XMLHttpRequest (oder anders) immer wieder regelmäßig »pollen«, also kurz beim Server nachfragen, ob es Nachrichten gibt. Das ganze läuft dann aber innerhalb von Sekunden ab. Der Server sagt »nein« oder »ja, folgende Nachrichten: ...«. Dabei läuft das serverseitige Script auch nicht ewig, sondern schaut nur kurz in der Datenbank o.ä. nach.

Im Gegensatz zur Datenbank vermisse ich bei Ajax so etwas wie die connect_id.

Der XMLHttpRequest-Konstruktor gibt dir das XMLHttpRequest-Objekt zurück - das ist die Connection-ID.

Was die »Gleichzeitigkeit« von Verbindungen angeht: Du kannst »gleichzeitig« (das heißt nacheinander) mit mehreren XMLHttpRequest-Objekten mehrere Serveranfragen starten. Die werden dann vom Server beantwortet, die Reihenfolge entspricht nicht notwendigerweise der des Startens.

Wie gesagt, das geht, ist aber etwas anderes, als du dir offenbar vorgestellt hast (eine Verbindung ist ewig lange offen, andere Anfragen werden nebenher abgesendet).

Mathias