HTTP-Keep-Alive Request

nepda

Erfahrenes Mitglied
Hallo,

ich suche jetzt schon eine ganz Weile nach guten Informationen, wie und wann ich HTTP-Keep-Alive Requests durchführe. Leider kann ich nur sehr wenig finden (evtl. such ich auch nicht richtig :()
Kann mir jemand dazu etwas sagen, oder mir Quellen angeben?
Eigentlich will ich sowas wie auf der Seite studivz.net/schuelervz.net beim Plauderkasten haben -> also eine offene Verbindung, die auf antworten wartet.
Die Header sind (soweit ich sie mit FireBug abfangen konnte) folgende:

Antwort-Header
Server: Apache-Coyote/1.1
Content-Type: application/json
Content-Length: 4
Date: Thu, 25 Dec 2008 21:21:32 GMT


Anfrage-Header
Host: im.schuelervz.net
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.0.5) Gecko/2008120122 Firefox/3.0.5 (.NET CLR 3.5
.21022)
Accept: application/json, text/javascript, */*
Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest
Referer: http://im.schuelervz.net/webx/serverInterface.jsp?nocache=20081217-0
Content-Length: 14
Cookie: JSESSIONID=866E100BCA8A71D61D57B7558B6226E7.lnxp-2153; PHPSESSID=0b034772d39219f9500fbc250c6784fb7fa
433d9

Die Anfragen dauern ~55.04s (nicht ms!)

Wie krieg ich sowas hin?

Vielen Dank!
 
Das HTTP unterstützt keine wirklichen persistenten Verbindungen. Das keep-alive sorgt stattdessen dafür, dass für mehrere HTTP-Anfragen dieselbe TCP-Verbindung genutzt wird statt für jede Anfrage eine neue zu öffnen.

Was dein Vorhaben angeht, wird vermutlich bloß in regelmäßigen Abständen eine Anfrage gesendet, wodurch der Eindruck der Echtzeit entsteht.
 
Naja, wenn der Webserver wirklich die Seite gleich neu anfragt und dann diese 55 Sekunden auf eine Antwort wartet, ist wohl PHP angewiesen worden, die Skriptabarbeitung hinauszuzögern (z.b. mit http://de3.php.net/usleep). Das wäre aber wirklich eine sehr miese Umsetzung und ist keinesfalls empfehlenswert. Wenn das hier ein Sysadmin liest, platzt ihm vermutlich grad der Kragen.

In Deinem Fall solltest Du wirklich mit einem periodischen Ajax-Call arbeiten. Zum Beispiel mit dem "PeriodicalUpdater" von Prototype (http://www.prototypejs.org/api/ajax/periodicalUpdater).

Hoffe, ich habe das Problem richtig erkannt. :)
 
@sebastiangdot: Dass das ganze nicht mit sleep oder usleep gemacht wird oder gemacht werden sollte, war mir klar :). Bisher regel ich das mit einem setTimeout()/setInterval() in JavaScript/AJAX. Ich wollte den Server etwas schonen, indem ich eben eine offene Verbindung immer wieder benutze, anstatt alle 1-2 Sekunden eine neue aufzubauen. Auf den, im ersten Post genannten Seiten wird offensichtlich eine Verbindung aufgebaut, eine Antwort gesendet, aber die Verbindung nicht geschlossen...
Eigentlich ist das ganze nicht so wichtig, mein Server sollte das schon verkraften, ich dachte halt nur, dass es da relativ einfache Möglichkeiten gibt - falsch gedacht :)
@Gumbo: ist das nicht das, was ich suche? hört sich irgendwie nicht so an. Könntest du mir Quellen angeben, wo ich mehr darüber erfahren kann (über "mono-keep-alive")

P.S. Das ganze sollte für einen Chat sein, darum so häufige Requests. Wenn jemand noch Ideen hat, gerne :) Ansonsten bleib ich dabei, immer neue Verbindungen aufzubauen.


Dank soweit, an euch beide!
 
Zuletzt bearbeitet:
Zurück