Hallo,
Die HTTP-Chats, die ich meine, haben in der Bedienung und der
(grundlegenden) Funktion nur marginale Unterschiede zu IRC-Chats.Und wie sollen die funktionieren? Per Server-Push?
Nicht wirklich, nein.
Grob beschreiben öffnet der Client (=Browser) eine HTTP-Verbindung zum
(Chat-)Server. Der Server sendet seine Antwortpakete, schließt die
Verbindung aber nicht, sondern hält sie für die Dauer der gesamten
Chat-Sitzung offen. Über diese Verbindung können nun Daten an den
Client geschickt werden. Die gängigen Browser halten die Verbindung
zum Server so lange offen, bis er diese schließt. Solange noch Daten
kommen, wird die Verbindung also auch von der Browser-Seite aus nicht
geschlossen.
(Auf gewisse Weise handelt es sich bei der Kommunikation um einen
Download, der "nie" beendet wird.)
Es gibt jetzt verschiedene Möglichkeiten welche Art von Daten man
sendet. In den mir bekannten HTTP-Chats wird ein nicht unerheblicher
Teil der Darstellungslogik auf der Client-Seite ausgeführt. Der
Server sendet dann nur noch JavaScript-Code.
Ungefähr so:
<script>enter('slyh');</script>
<script>say('slyh', 'Dies ist ein Test');</script>
<script>leave('slyh');</script>
Der JS-Code auf der Client-Seite stellt dann sicher, daß bei einem
"enter" die Meldung "$User hat den Chat betreten" angezeigt und die
Liste der sich im Chat befindenden User aktualisiert wird.
Die JS-Funktionen "enter", "say" und "leave" werden natürlich beim
ersten Aufruf der Seite übertragen.
Die Liste der aktuellen User, das Chat-Eingabefenster und natürlich
der Hauptbereich sind eigene Frames. Im Hauptbereich, wo die
Nachrichten angezeigt werden, wird vom Server der JS-Code über die
offengehaltene Verbindung übertragen.
Mir sind fallen spontan zwei Chats ein, die diese Technik verwenden:
http://chat.dark-world.de/ und http://www.foxworx-chat.de/
Letzterer ist schon recht alt und unterstützt nur den IE.
Gruß
Slyh