2009-04-14 6 views
2

Ich habe einen Chat gemacht, dass ich mit Telnet verbinden kann. Mein Chat ist derzeit als Twisted TCP Server implementiert. Wie wandle ich es in einen Chat für den Browser um?Machen Sie einen Web-Chat mit twisted

Ich nehme an, ich sollte einen Comet-Server (z. B. Orbited) verwenden, um statischen HTML- und dynamischen Inhalt gleichzeitig zu liefern. Ist ein solcher Comet-Server für einen schnellen und zuverlässigen Chat notwendig?

Antwort

1

Comet ist die beste Option, ohne etwas Besonderes zu verwenden (wie Flash, siehe unten). Es ist eine bewährte Technologie und wird von vielen großen Websites wie dem Google Mail-Chat und dem Facebook-Chat verwendet.

Die einzige andere Option, die Sie haben, ist Polling, aber das kann manchmal ein bisschen intensiv auf dem Server werden. Sie müssen die Serverbelastung im Grunde gegen die Geschwindigkeit abwägen - wenn Sie häufig abfragen, erhalten Sie einen sehr reaktionsfreudigen Client, aber Sie belasten Ihren Server sehr. Umfrage zu wenig und Sie halten die Ladung Licht, aber Clients können nur Nachrichten alle n Sekunden empfangen, so dass es langsam scheinen kann.

Wenn Sie sich für eine Umfrage entscheiden, können Sie immer ein "Backoff" -System erstellen. Die Seite überprüft beispielsweise alle 2 Sekunden, ob Chatnachrichten gesendet werden. Es macht das 5 mal und wenn es nichts gibt, erhöht sich die Verzögerung auf 3 Sekunden. Es tut dies 5 mal und nach nichts geht es bis 4 Sekunden .. etc. Wenn eine Chat-Nachricht gesendet wird, wird sie auf die kürzeste Verzögerung zurückgesetzt.

Eine weitere Option, die noch besser ist, ist die Verwendung eines Flex- oder Flash-Clients. Auf diese Weise können Sie einfach TCP-Sockets verwenden, die nur Daten senden, wenn es welche gibt. Aber das ist nur, wenn Sie wirklich eine Flash-App auf Ihrer Website möchten.

+0

Danke, bekomme ich richtig, dass ein Comet-Server eine Schnittstelle für die Chat-App bietet, um Daten ohne Nachfrage an den Browser zu senden? "Auf diese Weise können Sie einfach TCP-Sockets verwenden, die nur Daten senden, wenn es welche gibt." - Mit Flash kann ich die gleiche Backend-Anwendung wie für das Telnet verwenden, oder? – Alex

+0

Sie müssen noch eine Anfrage mit Comet machen, aber was die Technologie ist, ist im Grunde eine sehr lange Umfrage. Ihre Webseite wird eine PHP-Seite anfordern, aber diese PHP-Anfrage bleibt so lange offen, bis der Server tatsächlich Daten zu senden hat. Diese "lange Umfrage" kann Minuten dauern (im Gegensatz zu einer normalen Umfrage ... (Forts.) – ryeguy

+0

... die schnell überprüft und zurückgibt, wenn nichts zu senden ist). Sie können ein Beispiel dafür unter http://www.zeitoun.net/articles/comet_and_php/start finden. Und ja, wenn Sie TCP mit Flash wählen, können Sie Telnet einbinden, da Telnet auch über TCP läuft. Sie müssten dann jedoch ein textbasiertes Protokoll verwenden – ryeguy

0

Ja ist es! Überprüfen Sie www.meebo.com! Sie benutzen den Kometen als ihre grundlegende Plattform!