Détecter la fermeture du navigateur coté server - Version imprimable +- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org) +-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38) +--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51) +--- Sujet : Détecter la fermeture du navigateur coté server (/showthread.php?tid=581) |
Détecter la fermeture du navigateur coté server - Furukoo - 30-12-2010 Bonjour Si je fais un scrip php dans lequel je met l'intruction sleep(30) je vais sur le scrip par http à travers le navigateur. Au bout de 15 secondes je ferme mon navigateur internet. Est ce que je peux détecter la fermeture du navigateur coté php ? Quelqu'un a une solution ? Merci Bonnes fêtes de fin d'année par avance RE: Détecter la fermeture du navigateur coté server - Sephi-Chan - 30-12-2010 Aucune solution possible côté serveur. La seule possibilité est d'utiliser Javascript/Flash/Silverlight pour établir une connexion persistante (Comet, Socket, Websocket, par exemple) vers le serveur (NodeJS, EventMachine, APE, par exemple). Il devient alors trivial de déclencher des événements à la fermeture d'une connexion. Sephi-Chan RE: Détecter la fermeture du navigateur coté server - php_addict - 30-12-2010 je ne vois pas l'interet de vouloir faire cela... sinon peut etre en AJAX: tu fais un script qui envois toutes les 10 sec l' id de sessions et si tu recois pas l'info toutes les 10 sec alors c'est que tu n'est plus sur la page... a vrai dire je ne sais pas si c'est terrible ce que je viens de dire... pourquoi veut tu faire ceci, on pourrait peut etre t'aider? RE: Détecter la fermeture du navigateur coté server - Hideaki - 30-12-2010 Du même avis que php_addict, au lieu de détecter la fermeture de la page, tu peux détecter la non ouverture de celle-ci. Et même question que php_addict ... RE: Détecter la fermeture du navigateur coté server - niahoo - 30-12-2010 (30-12-2010, 02:41 PM)php_addict a écrit : je ne vois pas l'interet de vouloir faire cela... C'est la solution la plus simple, du moins la première qui me vient à l'esprit. Un petit polling des familles, toutes les x secondes, x étant la précision à laquelle tu veux savoir un user déconnecté (+ un lag éventuel à prendre en compte, donc ne pas espérer travailler en milisecondes) et c'est fait. RE: Détecter la fermeture du navigateur coté server - Horace - 07-02-2011 Citation :Un petit polling des familles, toutes les x secondes (...) savoir un user déconnecté Et le joueur parti chez sa mémé (en laissant la fenêtre ouverte) est compté comme "connecté". RE: Détecter la fermeture du navigateur coté server - Hideaki - 07-02-2011 Le problème était de détecter la fermeture du navigateur, hors s'il part chez mémé et qu'il laisse sa fenêtre ouverte la solution reste bonne après pour savoir si un joueur est toujours connecté, il est préférable d'utiliser d'autre solution sinon ajouter à la solution proposé : au bout de n itération demander via un message de confirmation s'il est toujours en ligne ( n est réinitialisé à chaque changement de page, d'appel AJAX spécifique, ou action de la part de l'utilisateur ). RE: Détecter la fermeture du navigateur coté server - niahoo - 08-02-2011 Oui tu peux mettre un timeout, c'est hors sujet. RE: Détecter la fermeture du navigateur coté server - NicoMSEvent - 08-02-2011 pour moi, la solution la plus propre/plus économe/plus facile a développer : Pour un visiteur, a chaque chargement de page, enregistrer l'heure a laquelle c'est fait. Si le visiteur ne change plus de page pendant 5 minutes (valeur arbitraire), on le considère comme déconnecté (pas besoin de webSpcket, ni de javascript/ajax). L'instantané via HTTP à toujours été un problème pas facile a contourner. Tu souhaites savoir a quel moment exact il se déconnecte? Pourquoi? Il y a une raison particulière, un besoin bien précis à cela? (il faut parfois se poser les bonnes question au lieu d'essayer de trouver des réponses ) RE: Détecter la fermeture du navigateur coté server - Sephi-Chan - 08-02-2011 Le problème n'en serait plus un si tous les navigateurs géraient Websocket : l'événement de déconnexion existe bel et bien. Ce serait tout de même plus efficace et plus simple. Ce dont tu parles est un bon moyen de gérer la chose (bien que moins exact, c'est mieux que rien). D'ailleurs, c'est géré automatiquement par certains frameworks comme Authlogic où chaque requête effectuée par un utilisateur connecté met à jour son attribut last_activity_at (de type DATETIME), s'il existe. Sephi-Chan |