-
qui est en ligne ?
Bonjour à tous,
Je suis en train de coder un mini chat.
Pour savoir qui est en ligne, j'ai créée une table "connected_users".
Cette table contient les champs suivants : id(auto increment),name,ip,sessionId(unique),lasTime.
Lorsque que l'utilisateur se connecte, cela ajoute une ligne dans cette table.
Lorsque l'utilisateur se déconnecte, cela supprime la ligne dont l'id de sa session == sessionId.
le problème, c'est que l'utilisateur ne va pas forcement se déconnecter, il peut tout simplement fermer le navigateur. Donc lorsqu'il va vouloir se reconnecter, il y aura un refus puisqu'il sera encore vu comme déjà connecté.
Quelqu'un a une idée ?
Merci.
-
tu peux ajouter un system de timeout, qui le supprimerait de la table au bout de Xmin d'inactivite
et en parallele, tu peux ajouter un champ real_user, qui serait compose du md5(version du navigateur + os + ce que tu veux)
=> ce qui permet d'etre presque sur d'avoir un vrai utilisateur unique
ainsi, si le pseudo est deja en ligne, tu verifies le md5(version du navigateur + os + ce que tu veux)...si c'est le meme, a 99.99%, c'est le meme utilisateur et donc, tu force sa connexion, sinon, c'est que c'est quelqu'un d'autre, et faudra qu'il attende le timeout...
c'est une piste.. a savoir s'il en exite d'autres mieux....
-
Merci Doksuri,
Je me demande si je ne vais pas faire quelque chose de similaire à msn messenger.
Si le navigateur plante, je me reconnecte. Lors de la connexion, cela va supprimer la l'ancienne ligne de la table et en créer une nouvelle.
Si le navigateur a planté, l'utilisateur ne verra rien. par contre, si l'utilisateur n'as pas planté, cela lui enverra un message lui disant qu'il est connecté ailleurs.
Vous en pensez quoi ?
Merci
-
envoie un événement de déconnexion avec onbeforeunload, ou fait un système de ping
-
Merci stealth (encore une fois )
J'ai fais une fonction de déconnexion avec .unload() de jQuery.
Pour ceux que cela intéressent, dans les options de .ajax() sur un unload(), mettre le "async" à "false" pour que cela fonctionne.
si en cas de plantage du navigateur le unload ne fonctionne pas, je vais quand même faire une fonction qui vas détecter la dernière action de l'utilisateur comme me l'avait proposé Doksuri.
Merci à vous deux.