JeuWeb - Crée ton jeu par navigateur
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)

Pages : 1 2 3


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...

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?

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é". Big Grin


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 Wink 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 Wink )


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. Smile

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