Hallo, ihr da draußen. Ich möchte gerne wissen, wie man einen einfachen chatbereich, z.B. wie hier bei nickles in eine eigene homepage einbindet.
Homepage selbermachen 7.852 Themen, 35.619 Beiträge
es gibt dafür 3 möglichkeiten
1. und einfachste..chat einfach von anderem server einbinden, kostenlose gibt es z.b. bei www.mainchat.de
2. wenn du über webspace mit php, perl, sql oder java verfügst kannst du dir chatscripte teilweise kostenlos herunterladen und auf deinem server installieren.
3. chat selber bauen. setzt webspace wie unter 2. voraus und kenntnisse in mindestens einer scriptsprache.
Hey, vorsicht, die meisten Webspace-Anbieter mit PHP PERL MySQL etc. haben in ihren AGBs stehen KEINEN CHAT, sonst fliegt die Seite sofort!!!
meiner nicht ;o)...
problem beim chat ist der load den manche scripte erzeugen.
gerade perl-scripte und php scripte sind da oft nicht gerade
vorbildlich, da die seiten automatisch in gewissen intervallen
reloadet werden müssen. der grund ist ganz einfach:
der client kann nicht wissen wann auf dem server eine neue
nachricht eingegangen ist und muß auf verdacht laden. wenn man
dann noch auf javascript verzichten will/muss dann bleibt nichts
übrig, als die komplette seite zu laden, somit erzeugen schon 10
user eine last von ca 120 usern/minute (bei einem refresh von 5s).
bei einer durchschnittlichen größe des chatfensters von 5kb werden
in 10 minuten schon ca. 7MB für 10 user übertragen (man darf die
protokolldaten nicht vergessen, da ja nicht nur die reinen 5kb der
seite über das netzwerkinterface laufen). wenn man noch die connects
zur datenbank hinzurechnet kann man sich vorstellen, daß ein server
so schon recht schnell in schwierigkeiten kommen kann, da er ja auch
noch andere seiten ausliefern muß, ganz zu schweigen vom traffic, der
auf einen user zukommen kann. mal angenommen, daß ca. 5 stunden am tag
durchschnittlich 10 user im chat sind und das an 20 tagen im monat, so
kommt man nur für den chat schon mal auf 4GB (nein, ich hab mich nicht
verschrieben, es sind ca 4GigaByte).
geht man jetzt mal davon aus, daß man kombiniertes serverseitiges und
clientseitiges scripting nutzt, so könnte man den chat folgendermaßen
aufbauen:
der server erzeugt bei neu eingegangener nachricht eine textdatei auf
dem server mit der neuen zeile. auf dem client läuft ein script
(javascript,VB, flash) das mittels cross-site-scripting in gewissen
zeitabständen nachschaut, ob eine neue textdatei vorhanden ist, diese
wird dann vom script geholt und mittels DHTML in das bestehende
fenster geschrieben. man verringert so zwar nicht die netzwerklast
der connects, aber den traffic ungemein. nehmen wir mal wieder die 10
user von oben an und nehmen an, daß eine textdatei durchschnittlich
aus 100 zeichen besteht. dann wären wir bei weniger als 1kb pro
textdatei. somit hätten wir den traffic um mehr als 80% gesenkt.
wenn man jetzt noch weiter geht und das ganze mittels applet auf
dem client löst, so kann man sogar die connects herunterschrauben.
der client lauscht über das applet auf einem bestimmten port auf ein
signal des servers, das neue nachrichten eingegangen sind, erst dann
läd er die reinen textdaten und schriebt sie in das chatfenster. die
hauptarbeit wird somit auf dem client erledigt. so würde sich traffic
und last ohne weiteres auf 20% und weniger herunterschrauben lassen.
ps: aber es gibt ja schließlich leute, die um applets und scripte auf
ihrem rechner einen riesen bogen machen, da sie ja sooo gefährlich
sind, auch wenn sie ansonsten bedenkenlos jedes tool aus zweifelhaften
quellen installieren oder ihre mails mit outlook verwalten und die
vorschau immer schön aktiv haben. ;o)
Hallo,
also vielleicht mal einen denkansatz, wenn du vorhast, die sache mit PHP zu machen. Ich gehe jetzt mal davon aus, dass jeder chatten kann, ohne Anmeldung:
-> Über ein input Feld fügt jeder in die DB erstmal seine Nachricht ein. diese werden dann nach datum vielleicht aufsteigend geordnet
-> Der neue Datensatz ist nun in der Tabelle gespeichert
-> Nun kannst du per affected_rows (nickles macht das anders, per aktualisierung alle 3 sekunden) die neuen Zeilen ausgeben lassen, vielleicht mit einer simplen schleife. Selbst hab ich es noch nicht versucht, aber affected_rows sollte dann nur die zeile ausgeben, wenn auch wirklich eine vorhanden ist, erstens sollte das mehr echtzeit bringen und zweitens sollte es auch mehr ruhe bringen so in opara beispielsweise.
-> Wenn die Tabelle dann irgendwann zu voll wird, kannst du entweder manuell immer mal ein paar alte datensätze löschen oder per JOB generell alle löschen, die z.b. älter als 1 tag sind oder du erlaubst z.b. nur bis zu 30 zeilen, dadurch wird die DB nicht überflutet. Nachteil: wenn du das teil schlecht programmiest, wird dein Provider sauer, weil die CPU wahrscheinlich darunter leidet und die anderen Webseiten die gehostet werden auch.
oder du machst es einfach so wie die mehrheit, du holst dir einen freewarechat, z.b. flash oder JAVA. schau dazu mal unter google.de