Idee |
Server sendet nicht nur ein Dokument, sondern in
Abständen mehrere vollständige Dokumente hintereinander.
Die Verbindung zwischen Server und Client bleibt also
über eine lange Zeit bestehen.
|
mime type |
für diese Dokumente wird ein spezieller mime type verwendet:
multipart/x-mixed-replace
|
Struktur des Dokuments |
einzelne Dokumente werden durch Textmuster, boundaries, begrenzt,
ähnlich wie inline-Dokumente in shell- oder perl-Skripten.
|
| |
Beispiel |
Das von einem CGI-Skript erzeugte Dokument
|
|
HTTP/1.1 200 OK
Content-type: multipart/x-mixed-replace;boundary=Muster
Connection: close
--Muster
Content-type: text/html
Das 1. Dokument
Das 1. Dokument
--Muster
Content-type: text/html
Das 2. Dokument
Das 2. Dokument
--Muster--
|
| |
|
Das gesamte Dokument muss stückweise erzeugt werden und über
die Standardausgabe ausgegeben werden, anschließend wird auf
einer neuen Zeile das Muster ausgegeben und der Puffer von stdout
geleert werden. Danach wird das CGI-Skript eine Zeit warten,
z.B. 5 Sekunden mit sleep 5 oder in Tcl mit
after 5000.
|
| |
|
Apache hack
Der Apache server puffert standardmäßig seine Ausgabe zum client hin,
dieses verhindert die gewünschte zeitliche Reihenfolge der Übertragung
der einzelnen Dokumente.
Beginnt der Name des CGI-Skripts mit nph- so
wird die Pufferung ausgeschaltet.
Aber es wird auch keinerlei header vom Apache erzeugt, also
muss der gesamte header einschließlich der 1. Zeile
HTTP/1.? errorcode
vom Skript erzeugt werden.
Nähere Information findet man in dem
endgültigen Apache Führer.
|
| |
|
Ein Dokument mit 2 Seiten, die mit
einer Verzögerung von 5 Sekunden übertragen werden
|
|
Die Uhr läuft ( 10 Sekunden )
|
|
es wird dunkel
|
| |