Ajax Chat lastet FF aus :/
lima-city → Forum → Die eigene Homepage → HTML, CSS & Javascript
abfrage
anfrage
ankommen
buchstabe
code
dank
datum
ergebnis
frage
http
intervall
machen
nachricht
sekunde
server
umlaut
url
verarbeiten
verzichten
wirkliche fehler
-
Hallo LC,
ich habe einen Ajax Chat geschrieben denn ich in mehren Webseiten verwende...
Leider lastet er den Firefox ziemlich aus so das bei der Eingabe einer neuen Nachricht Buchstaben im
Input "vergessen" werden... dies tritt bei mit nur im FireFox auf. Kann mir jemand helfen?
hier die Chat Abfrage: klick
HELP
Beitrag zuletzt geändert: 18.4.2012 17:10:50 von christian1603 -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
vielleicht musst du einfach die Abfrage-Intervalle im Firefox so verlängern, dass er nicht mehr so ausgelastet ist?
-
Du hast ziemlich viele Replace drin, das kann dauern vor allem bei so vielen. Wenn dann das nächste Request ausgeführt wird, bevor die Daten fertig bearbeitet wurden, kann es schon mal hängen. Du könntest die Replaces serverseitig vornehmen oder darauf verzichten, wenn dein Encoding stimmt würden auch Umlaute angezeigt werden. Außerdem bräuchtest du nicht jedesmal den gesamten Chatverlauf senden, sondern nur die Änderungen / neue Nachrichten, dann hast du erheblich weniger Traffic und Daten die es zu verarbeiten gibt.
-
trueweb schrieb:
Du hast ziemlich viele Replace drin, das kann dauern vor allem bei so vielen. Wenn dann das nächste Request ausgeführt wird, bevor die Daten fertig bearbeitet wurden, kann es schon mal hängen. Du könntest die Replaces serverseitig vornehmen oder darauf verzichten, wenn dein Encoding stimmt würden auch Umlaute angezeigt werden. Außerdem bräuchtest du nicht jedesmal den gesamten Chatverlauf senden, sondern nur die Änderungen / neue Nachrichten, dann hast du erheblich weniger Traffic und Daten die es zu verarbeiten gibt.
Letzteres mach ich bereits. Ich frage im 2 schritt ab ob es Neue Nachrichten gibt. Das mit dem Request werde ich mal versuchen. Danke schonmal :) -
Der wirkliche Fehler könnte darin liegen, dass du deine Abfrage nicht asynchron machst... derzeit ist bei dir noch alles synchron, was das JavaScript auch ausbremst.
Das "auslasten" sehe ich leider nicht... -
Also die Replace hab ich alle rausgenommen. Daran liegt es nicht :/
hackyourlife schrieb:
Der wirkliche Fehler könnte darin liegen, dass du deine Abfrage nicht asynchron machst... derzeit ist bei dir noch alles synchron, was das JavaScript auch ausbremst.
Das "auslasten" sehe ich leider nicht...
Also bei vielen Besuchern & bei mir ist es so wenn ich auf : die Chat seite gehe
& in Imput text eingebe kommt es dazu das Buchstaben nicht geschrieben werden. (Beim schnell schreiben)
Wie meinst du asynchron? Ich frage den Server alle 3 Sekunden 1 mal ab und werte das Ergebnis aus. Wie kann ich
das asynchron machen :/ Oder meinst du alle Server abfragen insgesamt auf der seite?
LG :) -
christian1603 schrieb:
Zuerst mal wie es bei dir ist:
Wie meinst du asynchron? Ich frage den Server alle 3 Sekunden 1 mal ab und werte das Ergebnis aus. Wie kann ich
das asynchron machen :/
du stellst die Anfrage mit dem XMLHttpRequest und schickst sie mit send();
Dabei wartet send() so lange bis die Daten empfangen worden sind und macht dann weiter, was den ganzen Firefox für diese Zeit hängen lässt.
Asynchron: du schickst auch die Anfrage mit send(), das Script läuft aber sofort weiter und wartet nicht. Wenn die Daten ankommen wird ein Callback aufgerufen.
Dazu ein Link und etwas Beispielcode:function createXMLHttpRequest() { if(window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari return new XMLHttpRequest(); } else { // code for IE6, IE5 return new ActiveXObject("Microsoft.XMLHTTP"); } } function getContent() { var request = createXMLHttpRequest(); request.onreadystatechange = function() { if((request.readyState == 4) && (request.status == 200)) { var doc = request.responseText; // in der Variablen doc stehen deine Daten // hier musst du das dann verarbeiten... } } request.open("GET", "seite.php", true); // das true macht die Anfrage asynchron request.send(); }
-
hackyourlife schrieb:
christian1603 schrieb:
Zuerst mal wie es bei dir ist:
Wie meinst du asynchron? Ich frage den Server alle 3 Sekunden 1 mal ab und werte das Ergebnis aus. Wie kann ich
das asynchron machen :/
du stellst die Anfrage mit dem XMLHttpRequest und schickst sie mit send();
Dabei wartet send() so lange bis die Daten empfangen worden sind und macht dann weiter, was den ganzen Firefox für diese Zeit hängen lässt.
Asynchron: du schickst auch die Anfrage mit send(), das Script läuft aber sofort weiter und wartet nicht. Wenn die Daten ankommen wird ein Callback aufgerufen.
Hey Danke :) Das mit dem "true" wuste ich nochnicht.
DANKE :) -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage