wie realisiere ich einen client online status?



  • danke schonmal.
    🙂



  • Was soll das sein?
    Und womit überhaupt?



  • es gibt drei zocker-webseiten. wenn der eingeloggte benutzer eine dieser 3 seiten geöffnet hat, soll ein online status erscheinen, indem der benutzername auf der hauptseite farbig markiert wird. die server-programmiersprache ist c.



  • Hmm, meine Variante:
    Vermutlich hast du schon eine Lösung bzgl. der Speicherung deiner Nutzer. Speicher beim log in bzw. bei log out den Nutzer als on oder off.

    Hinterlege in deiner CSS Datei Werte, die auf die Klasse reagieren, die Nutzer haben, die Online sind. Das geht ja noch alles ohne dynamisches HTML.

    Dann fügst du beim Auslesen der Startseite auf dem Server einfach bei jedem Namen eine Klasse hinzu, die ihn gemäß der CSS, als online zeigt, wenn der Name in den Onlinedaten auftaucht.



  • hmm.. ja aber das soll auch funktionieren, wenn der benutzer das fenster schließt, ohne sich über nen button auszuloggen.



  • Dann machst du einen Timeout nach x sec mit der letzten Nutzeranfrage.



  • der benutzer soll auch dann als online angezeigt werden, wenn er keine anfragen an den server sendet. ich fürchte, ich komme nicht drum herum zu pollen, z.b. in 5 sekunden intervallen. 👎



  • Naja, wielange bleibt denn das TCP-Socket auf. Ich glaube die Browser machen das nicht immer gleich wieder zu. Mein Firefox hat ewig gewartet, bis Daten da waren.

    Dann kannst du einen Nutzer auch anhand eines TCP Verbindung als on oder off registrieren.



  • ja, das wäre möglicherweise auch machbar. dann müsste ich für jeden user
    einen thread offen halten, in dem mit recv eine 0 oder eine -1 erwartet wird.
    kommt eine 0 oder eine -1 an, dann müsste ich per timeout warten, ob es eventuell bloß ein refresh war .... hmmm ...
    das könnte gehen.
    bloß was wenn der browser einfach so das socket dicht macht. eine verweildauer von mehreren stunden mit dem status online soll ja auch möglich sein ... hmmm .... ich weiß nicht ... kann micht nicht so recht damit anfreunden.
    das pollen gefällt mir aber auch nicht. 😃



  • Lol... du könntest dir aber auch deinen eigenen Browser für die drei Websites schreiben. Der könnte dann sagen, wenn er beendet wird 😃

    Also andere Lösungen fallen mir nicht ein. Ich würde einfach sagen, die Leute sollen sich ausloggen oder nach ner Stunde auto ausgeloggt werden.
    Natürlich könntest du den Leuten auch dringlichst ans herz legen sich direkt auszuloggen. Schon alleine der Sicherheit halber.

    Wenn einer Inaktiv vorm Rechner hockt, würde ich auch einfach von einem nicht eingeloggten Zustand ausgehen und als ausgeloggt zeigen.



  • wk schrieb:

    das pollen gefällt mir aber auch nicht. 😃

    Wieso nicht? Ist von den hier genannten Methoden eindeutig die beste (WebSockets wären auch eine Alternative, werden aber von den meisten Browsern noch nicht standardmäßig untertützt).
    Eine persistente, bidirektionale Verbindung bietet HTTP sonst nunmal nicht. D.h. solange der Client keine Anfrage sendet, hat der Server keine Informationen über den Client. Also musst du dafür sorgen, dass der Client regelmäßig Anfragen schickt, sprich: Polling.


Anmelden zum Antworten