AJAX / PHP Chat -> Online-Benutzer anzeigen

  • Halli Hallo liebes Forum,

    ich habe mir gestern einen kleinen aber feinen AJAX Chat zusammengebastelt. Zurzeit kann man nur unter seinem Namen eine Nachricht schreiben und diese absenden. Der Chat ist nur in eingeloggtem Zustand zu sehen, also muss man noch nichtmal seinen Usernamen selbst eingeben.
    Alle Nachrichten werden mit ID, Namen und Timestamp in die Datenbank geschrieben.

    Der Chat ist so zwar schon sehr gut für meine Bedürfnisse, aber ich hätte trotzdem gern eine weitere Funktion. Bei dieser Funktion weiß ich nur nicht weiter, deswegen möchte ich euch um Hilfe bitte.

    Ich möchte gerne anzeigen wer gerade im Chat ist. Also eine Liste aller User die sich gerade auf der Seite befinden. Außerdem gerne eine Anzeige, wieviele User im Chat sind aber das ist nebensache. Das bekomm ich ja sowieso raus wenn ich Problem 1 gelöst hab^^

    Ich hab mir bisher gedacht, dass ich einfach jeden User auch per AJAX in eine Datenbank-Tabelle speichere... Aber dann hab ich das Problem, dass ich ja nicht tracken kann, wann der User geht. Bzw fällt mir dazu nichts ein.
    Es kann ja auch unter Umständen sein, dass der User zwar im Chat ist, allerdings auch noch andere Seite von meiner Webseite in einem anderen Tag aufhat...

    Ich hoffe ihr habt ein paar Ideen für mich :)

    Don't follow me, I run into walls.

  • Du pollst doch eh vermutlich alle x Sekunden bei den eingeloggten Usern um zu prüfen ob eine neue Nachricht für sie da ist. Im gleichen Schritt aktualisierst du in deiner User-Tabelle (oder in einer eigenen Tabelle) ein Feld chatLastPolled mit dem aktuellen Timestamp. Gegen dieses Feld kannst du dann prüfen für deine Online-Liste, so in etwa:

    SQL
    SELECT id,name FROM user WHERE chatLastPolled+5>=NOW()

    "Programming today is a race between software engineers
    striving to build bigger and better idiot-proof programs,
    and the universe trying to build bigger and better idiots.
    So far, the universe is winning."
    Rick Cook

  • Toller Vorschlag! Ich hab immer nur daran gedacht, das zu prüfen wenn ein User was schreibt :D Frag mich nicht wieso ich nciht auf die Idee kam das zu prüfen wenn nachrichten abgerufen werden. Klappt wunderbar! Genau wie ich es wollte :) Vielen Dank

    Don't follow me, I run into walls.