Chat mit PHP/ JavaScript ?
S3Ri0US
- javascript
0 wucher wichtel0 Norbert0 Christian S.
Guten morgen alle zusammen...
Ich habe gestern in mein Forum einen kleinen Chat/Shoutbox eingebaut.. welcher wie folgt funktioniert:
Nachricht absenden ... Nachricht wird in Datenbank eingetragen.. ChatFenster(iFrame) wird über JavaScript alle 10Sec aktualisiert.
Das ganze funktioniert zwar.. ist aber nicht wirklich schön, da man den Refresh alle 10 Sekunden sieht. Hat jemand eine Idee wie man das ganze anders lösen kann ?
Danke schon mal.
Hallo!
Hat jemand eine Idee wie man das ganze anders lösen kann ?
Mit AJAX? Wenn du dich dafür entscheidest dann wäre folgendes für dich evtl. interessant: http://developer.mozilla.org/de/docs/AJAX:Getting_Started.
ciao, ww
Naja leider kenn ich mich mit AJAX 0 aus... Ich habe es jetzt über einen verstekcten iFrame gemacht.. geht auch wunderbar.. nur ein Problem ist da noch... Wenn er alle 10 Sek Aktualisiert.. haut er mir immer wieder alle 15 Nachrichten in die DIV... jetzt weiss ich auch nicht wirklich wie ich nur neue nachrichten welche noch nicht ausgegeben wurden anzeigen kann...
<?PHP
echo "<script type='text/javascript'>
var cDocument;
var cWindow;
function init_content()
{
var chatContents = parent.document.getElementById("shoutbox");
if(window.frames && window.frames["chatContents"])
cWindow = window.frames["chatContents"];
else if(chatContents.contentWindow)
cWindow = chatContents.contentWindow;
else
cWindow = chatContents;
if(cWindow.document)
cDocument = cWindow.document;
else
cDocument = cWindow.contentDocument;";
$abfrage = "SELECT id,datum,zeit,chatuser,text,userstatus FROM southbox ORDER by id DESC LIMIT 15";
$erga = mysql_db_query("700fps_d",$abfrage,$verbindung);
while (list($id,$datum,$zeit,$chatuser,$text,$userstatus) = mysql_fetch_row($erga))
{
if($mcolor=="1") {
$color="#555452";
} else {
$color="#5d5c59";
}
if($userstatus=="Paymember") {
$usercolor="#fff223";
} else if($userstatus=="Admin") {
$usercolor="#ff0000";
} else if($userstatus=="Mod") {
$usercolor="#bd0000";
} else {
$usercolor="#ffffff";
}
echo"
var msg$id = "<table width='610' bgcolor='$color' class='style1' border='0'><tr><td width='120'>$datum $zeit</td><td width='90'><font color='$usercolor'>$chatuser:</font></td><td width='400'>$text</td></tr></table>";
postText(msg$id);";
if($mcolor=="1") {
$mcolor="0";
} else {
$mcolor="1";
}
}
echo "
}
function postText(text)
{
var newDiv = cDocument.createElement("DIV");
newDiv.innerHTML = text;
cDocument.getElementById("content").appendChild(newDiv);
}
</script>";
Hallo!
Hat jemand eine Idee wie man das ganze anders lösen kann ?
Mit AJAX? Wenn du dich dafür entscheidest dann wäre folgendes für dich evtl. interessant: http://developer.mozilla.org/de/docs/AJAX:Getting_Started.
ciao, ww
Hallo,
Mit AJAX? Wenn du dich dafür entscheidest dann wäre folgendes für dich evtl. interessant: http://developer.mozilla.org/de/docs/AJAX:Getting_Started.
Auf http://www.galileocomputing.de gibts ein openbook für AJAX/Javascript, das sehr gut ist.
MfG
Hallo!
Auf http://www.galileocomputing.de gibts ein openbook für AJAX/Javascript, das sehr gut ist.
Ich zitiere Mathias:
"Aaaah, bitte nicht. Dieses Buch ist in vielerlei Hinsicht fehlerhaft und veraltet, daher mit Vorsicht zu genießen."
ciao, Lukas
Hat jemand eine Idee wie man das ganze anders lösen kann ?
im Prinzip JA, aber:
Zuerst habe ich versucht die ganze Kommunikation mit dem Server in einen verdeckten Frame zu verlegen und das Chatfenster daraus mit JavaScript zu aktualisieren. Sah auch zuerst ganz toll aus, bis dann die Rechner abstuerzten - RAM verbraucht. D.h. in keiner Scriptsprache ist es moeglich den RAM real freizugebnen, also so, dass er von anderen Programmen genutzt werden kann. Okay, bei 2GB dauert es eine Weile, bis man den mit "Hallo Leute ..." und "Was geht denn hier ab ..." verbraucht hat, aber irgendwann ist es soweit.
Dann bin ich darauf verfallen die Dateigroesse des Chatfensters zu minimieren, also fast nur Text mit minimalistischen HTML und eine zentrale CSS-Datei. Damit wurde das Flackern dann ertraeglich.
HTH
Gruss Norbert
Ajax sehe ich auch als die beste Lösung an. Dann brauchst du auch keinen Iframe mehr und es geht schneller.
Beispiel:
< http://www.linuxuser.at/chat/index.html>
Gruß!