JeuWeb - Crée ton jeu par navigateur
Nodejs - Fermeture de connexion - 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 : Nodejs - Fermeture de connexion (/showthread.php?tid=6473)

Pages : 1 2 3


RE: Nodejs - Fermeture de connexion - quentin01 - 30-10-2012

Il se peut que Firefox dise bien à Socket.IO qu'il faut se déconnecter alors qu'Opéra ne le fait pas. Dans le cas d'Opéra, disconnect doit donc être appelé après le temps de timeout je pense.


RE: Nodejs - Fermeture de connexion - Maks - 30-10-2012

Tu as quelle version de socket.io ? Est-ce que le message de déconnexion finis tout de même par arriver (genre 20 secondes après) ?


RE: Nodejs - Fermeture de connexion - Damocorp - 01-11-2012

Citation :Il se peut que Firefox dise bien à Socket.IO qu'il faut se déconnecter alors qu'Opéra ne le fait pas. Dans le cas d'Opéra, disconnect doit donc être appelé après le temps de timeout je pense.

Citation : Est-ce que le message de déconnexion finis tout de même par arriver (genre 20 secondes après) ?

Code :
debug - clearing poll timeout
   debug - xhr-polling writing 8::
   debug - set close timeout for client EaPkuHRzAmLsmeEaXkDb
   debug - xhr-polling closed due to exceeded duration
   debug - fired close timeout for client EaPkuHRzAmLsmeEaXkDb
   info  - transport end (close timeout)
Déconnexion EaPkuHRzAmLsmeEaXkDb
   debug - broadcasting packet
   debug - discarding transport

En effet, après 1 min 30 environ la fonction est appelée. Je n'avais jamais testé aussi loin.
C'est pas vraiment temps réelle ca. Donc soit je m'en satisfait, soit je passe par un autre système checkant les connectés via le setinterval.


Citation :Tu as quelle version de socket.io ?
La dernière en date : 9.10


Merci à vous pour ces clarifications !


RE: Nodejs - Fermeture de connexion - Maks - 01-11-2012

Essaye avec ça peut être : http://stackoverflow.com/questions/12043893/socket-io-force-a-disconnect-over-xhr-polling


RE: Nodejs - Fermeture de connexion - Damocorp - 01-11-2012

Merci pour le lien, mon anglais n'est pas encore suffisement bon pour me permettre de trouver de bons résultats comme celui-ci.
Mais ca ne fonctionne toujours pas sous Opéra.

de plus ca m'as permis de voir ceci :

Code :
debug - xhr-polling writing 8::
   debug - set close timeout for client XizGRQDZLPB7qqavuMsH
   debug - xhr-polling closed due to exceeded duration
   debug - clearing poll timeout
   debug - xhr-polling writing 8::
   debug - set close timeout for client tQYPmwmPRpZDL3MRuMsI
   debug - xhr-polling closed due to exceeded duration
   debug - clearing poll timeout
   debug - xhr-polling writing 8::
   debug - set close timeout for client 3FG_9IhYAaJDvzPQuMsJ
   debug - xhr-polling closed due to exceeded duration

Donc ca ouvre bien une nouvelle connexion à chaque fois si je switch rapidement. Et ca détecte la multi-fermeture que bien plus tard.
Maintenant ca, c'est sous la version 0.9.10, Ca peut changer quelque chose de passer en 0.9.9 ?

J'ai aussi configuré en 'xhr-polling' pour testé, et cela ne résoud pas le problème. Il vaut peut-être mieux partir sur quelque chose de plus fonctionnel ?

C'est quand même bizarre, car la doc l'indique comme étant stable.
Et ma version d'opéra est à jour.


RE: Nodejs - Fermeture de connexion - Maks - 02-11-2012

Aide toi de google trad dans un premier temps Wink
Pour les questions NodeJS, recherche sur stack et l'onglet "issues" des repo sur Github.

C'est compliqué à voir pour les connexions, le principe du xhr-polling c'est que ça ouvre/ferme une connexion par intervalle. Du coup c'est moins réactif que les WS, il ne faut pas t'attendre à une déco à la seconde près.
Tu peux essayer de réduire la durée du polling :


io.configure(function() {
io.set('polling duration', 20);
});

Voir si la déconnexion se déclenche plus rapidement qu'en 1m30.
Tu peux aussi essayer les autres modes de transport (cf. Wiki de socket.io) voir si ça va mieux (JSON polling faudrait tester peut etre)

Citation :C'est quand même bizarre, car la doc l'indique comme étant stable.

Ne confonds pas la doc de Node et de socket.io !

Citation : Maintenant ca, c'est sous la version 0.9.10, Ca peut changer quelque chose de passer en 0.9.9 ?

Ca peut être une solution. Tu sais il y a près de 400 tickets ouverts pour socket.io, c'est la folie quand tu y réfléchis. A une époque avec une ancienne version je m'étais aussi retrouvé bloqué pour je ne sais plus quelle raison.

Sinon bienvenue dans le monde des modules Node : de nouvelles versions avec plus de bugs que les anciennes, une doc des dernières versions souvent manquante, des changements parfois controversés ou parfois trop lourds d'une version à l'autre, un support de module qui s'arrête du jour au lendemain...

Sinon tu fais comme moi tu dis qu'opéra c'est de la merde et tu acceptes les remontrances de niahoo Confusediffle:


RE: Nodejs - Fermeture de connexion - quentin01 - 02-11-2012

Ou alors t'as deux méthodes qui s'offre à toi.

Première méthode tu essayes de réduire la durée de timeout dans la config, par défaut c'est 60 secondes : https://github.com/LearnBoost/socket.io/wiki/Configuring-Socket.IO .
Deuxième méthode : T'implémentes toi même ton systèmes de "PING/PONG". Tu envois un ping, si le client te renvoi pas un pong au bout d'une certaine durée tu considères qu'il est déconnecté et tu fermes sa socket.


RE: Nodejs - Fermeture de connexion - niahoo - 02-11-2012

(02-11-2012, 12:55 AM)Maks a écrit : Sinon tu fais comme moi tu dis qu'opéra c'est de la merde et tu acceptes les remontrances de niahoo Confusediffle:

Ben les utilisateurs d'opéra ont l'habitude des sites qui leurs disent que leur navigateur n'est pas supporté. Alors je suppose que comme moi ils ont l'habitude d'en avoir un second pour certains sites Smile

Si tu regardes les parts de marché des navigateurs sur PC tu verras que tu peux te passer de ce support en fait.

Par contre, votre truc là c'est du polling tout moche ou on peut faire du long polling ?

Sinon perso je compte utiliser sockjs, socket.io n'était pas compatible erlang lors de mon choix. Et il a l'air sympathique.

https://github.com/sockjs/sockjs-node

Après la seule doc ce sont les README de github mais ils sont bien faits. (j'ai pas lu celui pour node mais ça doit être dans la même veine)


RE: Nodejs - Fermeture de connexion - Maks - 02-11-2012

(02-11-2012, 01:33 AM)quentin01 a écrit : Première méthode tu essayes de réduire la durée de timeout dans la config, par défaut c'est 60 secondes : https://github.com/LearnBoost/socket.io/wiki/Configuring-Socket.IO

C'est plus au niveau du close timeout que ça se passe ouep

Citation :Ben les utilisateurs d'opéra ont l'habitude des sites qui leurs disent que leur navigateur n'est pas supporté. Alors je suppose que comme moi ils ont l'habitude d'en avoir un second pour certains sites 2

Si tu regardes les parts de marché des navigateurs sur PC tu verras que tu peux te passer de ce support en fait.

Pour les WS ça sera de l'histoire ancienne pour Opera avec la 12.1 ^^

SockJS j'en ai entendu parlé aussi, y'a nowjs pour Node aussi dans les plus connus mais ça a plus l'air à jour


RE: Nodejs - Fermeture de connexion - Damocorp - 02-11-2012

Faut pas oublier que ca reste aussi nouveau tout cela. Pas très bien gérer partout.
Je sais que je pourrai oublier Opéra, mais imagine que je me base sur ce 'disconnect', Je pourrai me retrouver avec un joueur qui soit afficher plusieurs car plusieurs connexion ont été ouverte.

Au final j'entrevoie comme solution :

- Le ping pong, que je trouve moins optimisé
- Toujours utilisé le 'disconnect' en accordant que ce ne sera pas tout a fait temps réel selon certains navigateur. Et en ajoutant une fonction qui vérifie si le joueur est déjà afficher comme connecté pour ne pas l'avoir en doublons.

Je pense utilisé la 2e. De toute façon, que le joueur soit affiché déconnecté de suite ou 1 min après, c'est pas comme si c'était vraiment essentiel. Ca reste qu'un tchat.