Moin!
Laufen muss das in Netscape >=6, MSIE >=5, Mozilla und Opera >=6
Nun habe ich mir schon mehrere Möglichkeiten ausgedacht:
SERVER PUSH:
Vergiß den ganz schnell. Geht nur mit Netscapes, und da auch nur bis Version 3.0 - also eher ungeeignet. Das "x-" im Mimetyp deutet ja auch darauf hin, daß es experimentell ist bzw. war.
Abgesehen davon lädt so ein Server-Push immer komplette Dateien neu - vom Server initiiert. Du mußt also nicht den Client anweisen, regelmäßig neue Seiten abzuholen, sondern könntest dann, wenn es etwas neues gibt, eine neue, komplette Seite raushauen. Bei 100 Meßwerten alle 2 Sekunden werden solche Seiten aber ziemlich groß.
CLIENT PULL:
Unschön, weil ich a) nicht weiß, wann Daten kommen (die 2 Sekunden im Beispiel sind nicht konstant) und b) die Seite nicht jedesmal neu laden will.
Dann geht das nicht. Das, was du willst, wäre beispielsweise auch in einem Chat das Problem: Unregelmäßig sagen Leute etwas, und alle sollen es mitbekommen. HTTP ist nicht das richtige Protokoll für solche Datenverbindungen, und ein Browser nicht das richtige Anzeigeinstrument.
CLIENT PULL mit Trick:
Jetzt habe ich mir überlegt, in einem versteckten Frame bzw. IFrame die neusten Daten per Client Pull zu holen und dann diese per DHTML dynamisch an die Tabelle zu fügen. Dies finde ich nicht besonders elegant und außerdem ist es fraglich, ob das auch wirklich überall klappt. Gerade bei Opera und DHTML brallen zwei Welten aufeinander...
Eben, das dürfte mit Opera garnicht gehen. Abgesehen davon hättest du möglicherweise ein Laufzeitproblem. Wenn der Browser regelmäßig (zeitlich gesteuert) neue Daten vom Server abholt und der Tabelle hinzufügt: Was passiert, wenn das Seitenladen der versteckten Hinzufüge-Seite noch nicht abgeschlossen ist, bevor die Zeit um ist? Daten würden verloren gehen.
Andererseite: Wenn die Seite automatisch neu lädt, wenn alle Eintragungen abgeschlossen sind, in der Zwischenzeit aber zuviele neue Daten eingetroffen sind, so daß die nächste Seite wesentlich größer wird, und die übernächste Seite noch viel größer - dann geht irgendwann garnichts mehr.
AUSGABE UNGEPUFFERT RAUSSCHRIEBEN:
Dazu habe ich ein kleines Demo, das aber irgendwie nicht das tut, was es soll:
Tja, das ist etwas tricky mit dem ungepufferten Rausschreiben. Ich hab von JSP keine Ahnung, wie es da gehen könnte.
Du mußt aber bedenken: Manche Browser schreiben, auch wenn sie die Daten schon haben, nur zeilen- oder absatzweise (Netscape 4 beispielsweise), oder sie warten auf einen etwas größeren Datenblock, um was zu tun.
Und natürlich mußt du mit den üblichen Browserverhaltensweisen kämpfen: Eine Tabelle wird erst dargestellt, wenn sie komplett geladen ist und </table> empfangen wurde etc.
Insgesamt kann ich mir irgendwie nicht so recht vorstellen, daß für deine Anforderungen ein nackter Browser geeignet ist. 100 Meßwerte wollen ja irgendwie dargestellt werden - und ich kann mir kaum vorstellen, daß jemand das überblickt, wenn alle 2 Sekunden weitere 100 Werte eintrudeln.
Ein Java-Applet (welches auch ganz andere Möglichkeiten der Client-Server-Kommunikation hat) wäre da ganz sicher besser - wenn du keinen eigenständigen Client schreiben willst. Dann kannst du nämlich doch wieder Server-Push realisieren, was für die Aufgabenstellung ideal ist. Und das Applet übernimmt die Darstellung.
- Sven Rautenberg