Kalle_B: AJAX - mehrere Verbindungen gleichzeitig?

Hallöle,

bin in Ajax noch nicht so tief eingestiegen, deshalb eine Verständnisfrage:

Können mehrere Verbindungen gleichzeitig offen sein?

Beispiel:

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.

*) dann fliegt das PHP- Script wegen Timeout raus, ist mir klar. Bevor ich gedanklich eine Lösung suche, ist erstmal zu klären, ob sich Ajax- Anfragen überlappen können. Im Gegensatz zur Datenbank vermisse ich bei Ajax so etwas wie die connect_id.

Es regnet im Odenwald. Kalle

  1. Moin!

    Bevor ich gedanklich eine Lösung suche, ist erstmal zu klären, ob sich Ajax- Anfragen überlappen können. Im Gegensatz zur Datenbank vermisse ich bei Ajax so etwas wie die connect_id.

    Du hast das jeweilige AJAX-Objekt, welchem du ja auch eine Funktion zuweist, die aktiv wird, wenn sich was am Verbindungsstatus ändert.

    - Sven Rautenberg

    --
    My sssignature, my preciousssss!
  2. bin in Ajax noch nicht so tief eingestiegen, deshalb eine Verständnisfrage:

    Können mehrere Verbindungen gleichzeitig offen sein?

    Was für Verbindungen?
    Du rufst einen HTTP Request auf und kannst auf die Antwort reagieren.

    Beispiel:

    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.

    Du meinst mit setTimeout(.....)?

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

    Du kannst soviel Requests aufrufen wie du möchtest.

    *) dann fliegt das PHP- Script wegen Timeout raus, ist mir klar. Bevor ich gedanklich eine Lösung suche, ist erstmal zu klären, ob sich Ajax- Anfragen überlappen können. Im Gegensatz zur Datenbank vermisse ich bei Ajax so etwas wie die connect_id.

    Es gibt ja auch keine Verbindung
    wieso sollte das PHP Skript wegen einem Timeout rausfliegen, dann ist es schlecht programmiert.

    Struppi.

    --
    Javascript ist toll (Perl auch!)
    1. Hi, Struppi,

      au weia, böses Mißverständnis ...

      Können mehrere Verbindungen gleichzeitig offen sein?

      Was für Verbindungen?
      Du rufst einen HTTP Request auf und kannst auf die Antwort reagieren.

      Mißverständnis 1:
      -----------------
      Ich rufe mehrere requests auf. Wenn die Antwort kommt, muss ich wissen, zu welchem request ...

      Du meinst mit setTimeout(.....)?

      Mißverständnis 2:
      -----------------
      Nein. Vielleicht ist das die Konsequenz, wenn ein PHP- Script wegen Timeout beendet wird. Dann muss Ajax nochmal anfragen ...

      Du kannst soviel Requests aufrufen wie du möchtest.

      okay. Das habe ich nicht gewusst.

      Mißverständnis 3:
      -----------------

      wieso sollte das PHP Skript wegen einem Timeout rausfliegen, dann ist es schlecht programmiert.

      Die Art der Programmierung ändert nichts daran, dass der Provider ein Zeitlimit setzt. Wenn ich im PHP- Script tagelang eine Schleife durchlaufe, kommt das nicht so gut.

      Jetzt ist Sonne im Odenwald. Kalle

      1. Können mehrere Verbindungen gleichzeitig offen sein?

        Was für Verbindungen?
        Du rufst einen HTTP Request auf und kannst auf die Antwort reagieren.

        Mißverständnis 1:

        Ich rufe mehrere requests auf. Wenn die Antwort kommt, muss ich wissen, zu welchem request ...

        Dann musst du mehrere HTTRequest Objekte erzeugen.

        Du meinst mit setTimeout(.....)?

        Mißverständnis 2:

        Nein. Vielleicht ist das die Konsequenz, wenn ein PHP- Script wegen Timeout beendet wird. Dann muss Ajax nochmal anfragen ...

        AJAX ist nur ein Synonym.
        Du hast ein HTTPRequest Objekt das ruft eine ganz normale URL auf, genauso wie wenn du diese in den Browser eintippst, warum sollte dort ein Timeout erzeugt werden?

        Mißverständnis 3:

        wieso sollte das PHP Skript wegen einem Timeout rausfliegen, dann ist es schlecht programmiert.

        Die Art der Programmierung ändert nichts daran, dass der Provider ein Zeitlimit setzt. Wenn ich im PHP- Script tagelang eine Schleife durchlaufe, kommt das nicht so gut.

        und das ist dann schlecht programmiert, bzw. lassen eben die Provider i.d.R. sowas gar nicht erst zu.

        Struppi.

        --
        Javascript ist toll (Perl auch!)
  3. 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