Anregungen für AJAX-Chat

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Anregungen für AJAX-Chat

    Hallo,

    bin momentan dabei, einen AJAX-Chat umzusetzen. Klar macht man sich vorher Gedanken, aber so ganz genau konnte ich AJAX und seine Fähigkeiten bis vor Kurzem noch nicht einschätzen, sodass ich also an einigen Stellen einfach mal probieren muss.

    Hat jemand noch eine Anregung, wie man den Datentransfer hinsichtlich. Performanz optimieren kann? Ich habs bisher so gelöst, dass zu Beginn ein Shared Memory-Bereich initialisiert wird, falls noch nicht geschehen. Anschließend wird mal der komplette Datenbankinhalt an bisherigen Zeilen ausgelesen und via innerHTML in einen IFRAME (Chat-Text-Bereich) eingebaut.

    Beim Eintritt ins Dokument wird über onload ein Timer auf eine Update-Funktion gesetzt, die die aktuelle ID der "obersten" Chatzeile mit dem in JavaScript geführten Wert vergleicht - stimmen beide Werte überein, wird nichts gemacht, außer die Funktion bald wieder aufgerufen, ansonsten werden alle Zeilen mit ID > der im JavaScript gespeicherten ID gelesen und per innerHTML ausgegeben.

    Wird eine Zeile geschrieben, werden die Daten per AJAX-HTTP-POST an ein eigens dafür vorgehenes Skript geschickt, das sie in die Datenbank schreibt und dabei auch gleich den ID-Wert im Shared Memory aktualisiert.

    Das funktioniert so einigermaßen...
    Tippt man wie ein Irrer drauf los, gerät an der Architektur was ins Schleudern und es kann passieren, dass auf weitere Eingaben nicht mehr reagiert wird. In der JavaScript-Konsole findet man auch vereinzelt Exceptions.

    Man könnte das mit viel Semaphoren-Hinbiegerei bestimmt noch bisschen optimieren, aber ich mein, dass es bestimmt generell noch performantere Ansätze gibt, als jede Zeile in die Datenbank zu schreiben, wofür nach dieser Umsetzung jedesmal ein eigener POST-Request notwendig ist genauso wie, dass die aktuelle ID aus dem Shared Memory des Servers gelesen wird - wahrscheinlich immer noch besser als aus der Datenbank, aber gehts nicht auch noch flüssiger? Über eine Socketverbindung vielleicht oder gibts noch einen Trick, der mir überhaupt noch nicht eingefallen ist?

    Gruß Gockel

  • #2
    Ich glaub du hast das mit dem Ajax nicht ganz verstanden, oder wieso verwendest du sonst noch nen IFrame und den Chatinhalt anzuzeigen? Per Ajax lassen sie auch Daten auch holen, nicht nur reinstopfen.

    Kommentar


    • #3
      Ja ok, man könnte auch was anderes als einen IFrame nehmen, aber der gefällt mir ganz gut und der selber ist ja noch kein größeres Problem... Die Daten werden auch per AJAX abgeholt.

      Es geht mir wie gesagt drum, wie man es allgemein gesagt hinbekommen kann, dass man nicht jede Zeile, die ein User so eintippt, gleich in die Datenbank schreibt, wenn im Chat viel Traffic stattfindet, sondern vielleicht irgendwie in JavaScript zwischenspeichert und erst, wenn "es sich mal wieder lohnt", in die Datenbank schreibt oder, ob es nicht auch Ansätze gibt, die ganz ohne Datenbank und Filezugriff auskommen, denn bis auf Weiteres gespeichert werden müssen die Daten wegen mir ja nicht, es reicht schon, wenn jeder, der neu hinzukommt, ab dann alles, was gechattet wird, mitbekommt. Erhalten werden muss da nichts.

      Kommentar

      Lädt...
      X