code2i: einen chat selbst machen (HILFE)

Beitrag lesen

Hallo....

Wie funktioniert das dann? Ich stelle mir vor das der Server die ganzen eingeloggten Client kennt, und diese alle an einem besteimten Port "lauschen", und wenn eine neue Nachricht kommt der Server an alle Client IPs auf entsprechenden Port irgendein Signal sendet, so dass diese sich aktualisieren. Ist das so wenigstens die richtige Richtung, oder liege ich total falsch?
Warum kann PERL sowas nicht?

Jups !!!

Das erste Problem ist in diesem Fall der Client. Verwende ich einen Browser als ChatClient muss ich an Funktionen nehmen was ich kriegen kann und da ein Browser mit seinem HTTP Protokoll nicht für derartige Sachen geeignet ist, kann man den Browser eigentlich nur versuchen zu überlisten.(request-response)

Zum Grundaufbau!!!

Der Client meldet sich am System an, wie auch alle anderen. Sendet ein Client eine Message(MSG) wird diese an alle anderen weitergeleitet (broadcasting).

Ob nun der Client auf einem bestimmten Port lauscht(z.B. Java) oder die neue Nachricht einfach in eine bestehenden Stream geschrieben wird hängt doch sehr vom Model des Protokolls ab. Es gibt da unterschiedliche Modelle wie die Kommunikation laufen soll und der Programierer hat sich zu entscheiden welches er auswählt.

Wenn man sich für das Streaming über HTTP entscheidet (Browser) fallen 90Prozent der Möglichkeiten weg.

Ich habe zwar auch schon andere Konstruktionen gesehen aber wenn man den Browser benutzen will ist Streaming doch die Methode mit der meisten Akzeptanl. Dazu baut der Browser eine Verbindung zum Server auf und lädt eine bestimmte Website welche die MSG der User enthalten soll. Diese Seite wird aber nicht vollständig geladen(der Ladevorgang wird nicht abgeschlosssen). Damit will man erreichen das eine ständige Verbindung zum Server aufrechtgehalten wird. Auf der Serverseite wird der Timeout des Sockets auf einen hohen Wert gesetzt um zu verhindern das dieser Datenstrom automatisch geschlossen wird. Trifft eine neue Nachricht eines Clients beim Server ein, wird diese MSG in den DatenStrom des Clients geschrieben.

Ein HTTP Server kann aber durch solche Aktionen sehr stark belastet werden da er, wei schon bemerkt für derartige Client Server kommu8nikation nicht ausgelegt ist. Solche Systeme lassen sich bei Einsatz einer Skriptsprache sehr schlecht skalieren da ich keinen oder nur einen sehr geringen Zugriff auf Threads(Arbeitsprozesse)habe oder die Sprache für solche Systeme nicht ausgelegt ist.

cu
  code2i