serveurs de sockets en java,perl,php,c++
Accueil L'offre Tarifs YSServer Tutoriaux Support Espace client Forum Legal
serveurs de sockets en java,perl,php,c++
Probleme de deconnexion du client
your-socket
Bienvenue, Invité. Veuillez vous connecter ou vous enregistrer.
Avez-vous perdu votre courriel d'activation?Bienvenue.
Septembre 09, 2010, 12:11:08

Connexion avec identifiant, mot de passe et durée de la session
Recherche:     Recherche +
Lancement du YSServer
1150 Messages dans 138 Sujets par 9690 Membres
Dernier membre: semiaddict
* Accueil Aide Recherche Identifiez-vous Enregistrez-vous
+  your-socket
|-+  Général
| |-+  YSServer
| | |-+  Probleme de deconnexion du client
« sujet précédent | | sujet suivant »
Pages: [1] Imprimer
Auteur Sujet: Probleme de deconnexion du client  (Lu 257 fois)
loupstigrou
Newbie
*
Messages: 26


Voir le profil
Probleme de deconnexion du client
« le: Février 23, 2010, 06:04:59 »

Hello !

J'ai un petit problème, en effet, j'ai remarqué que quand mon ADSL bug alors que je suis connecté à mon jeu, mon personnage reste connecté au serveur comme si j'étais toujours en ligne. En gros, quand ma connexion internet ou celle des autres joueurs coupe, le serveur croit qu'il est toujours là en train de jouer et il ne supprime donc pas le joueur du tableau des clients.

Comment puis-je faire pour résoudre ce problème ?


J'ai aussi une autre question, comment detecter l'inactivité d'un joueur ? PAr exemple je pars de chez moi précipitemment et j'ai oublié de me déconnecter du jeu. J'aimerai par exemple que le joueur soit déconnecté au bout de 30 min d'inactivité. Comment puis-je faire ? Je code quelque chose au niveau du serveur ou au niveau du client flash? Si je code sur le serveur, ça permettrait peut être de résoudre le problème quand internet coupe car le joueur devient ainsi inactif ?

Merci d'avance ^^


Journalisée
seal3
Administrator
Hero Member
*****
Messages: 504


Voir le profil
Re: Probleme de deconnexion du client
« Répondre #1 le: Février 23, 2010, 06:46:58 »

Salut !

Oui c'est normal que le serveur ne recoive rien, la coupure du socket comme quand on ferme le navigateur est en soit un message envoyé au serveur. Normalement le serveur fini tôt ou tard par le detecter et à le conciderer comme deconnecté. Si tu utilise ton propre script serveur tu peux regler ça en parametrant un keepalive sur la socket du client. Par contre ce n'est pas fiable tous les systemes ne l'utilisent pas forcement.

Une bonne approche serait de programmer au niveau du client un timeout qui envoie toutes les 20 secondes un petit message au serveur disant "coucou je suis toujours la". Côté serveur il suffit alors de faire une boucle et de voir depuis quand un client n'a rien envoyé. Si le delai depasse 25 secondes (+5 sec en cas de lag) alors le serveur le deco de lui même.

Pour la seconde question tu peux faire comme indiqué ci-dessus sauf qu'au lieu d'un time out il s'agirait de mesurer l'activité du client. Sinon plus simplement côté client programmer le fait que le gars ne fait rien pendant x minutes il se deco de lui même.
Journalisée

Ma signature utilise un compte your-socket afin de dessiner/chatter en temps réel. Etant aussi sur media-box vous y trouverez aussi leurs membres Smiley.
<a href="http://ystutori.your-socket.com/mediabox/dessin.swf" target="_blank">http://ystutori.your-socket.com/mediabox/dessin.swf</a>
loupstigrou
Newbie
*
Messages: 26


Voir le profil
Re: Probleme de deconnexion du client
« Répondre #2 le: Février 23, 2010, 07:41:30 »

Je vois ! Mais comment je fais, je place où cette boucle qui surveille les messages "coucou je suis là"? Dans une fonction à part où alors dans "onClientMessage($uid,$msg)" ?

Ensuite, je fais une boucle infinie avec un sleep(25); à l'intérieur pour la bloquer 25 secondes ? J'ai pense à un truc du genre :

Le client envoit "LA" toutes les 20 Secondes, quand le serveur reçoit "LA" du client $uid, la variable $clientList[$uid]['presence'] = true;

Ensuite, au bout de 25 secondes, le serveur vérifie si $clientList[$uid]['presence']==true, si oui, il remet la variable à false. Par contre, si elle est à false, il déconnecte le client.

ça marcherait ? Mais la boucle, elle commence à quelle moment et je la place où ? Dans la partie où le serveur reçoit le message du client ? Un exemple ?




 
Journalisée
seal3
Administrator
Hero Member
*****
Messages: 504


Voir le profil
Re: Probleme de deconnexion du client
« Répondre #3 le: Février 24, 2010, 09:58:26 »

Non ya plus simple. Quand le serveur recoit un "LA" d'un client il mémorise pour ce client l'heure actuelle :

$clientList[$uid]['presence'] = time();

Apres pour faire la verif c'est simple, à chaque fois que le serveur recoit un message il faut un test pour savoir quand est-ce la derniere fois qu'il à fait une verif de présence (avec une simple variable globale et un if pour tester si ça fait moins de 20 sec par ex). Si il doit faire la verif de presence il parcours alors tous les client et fait en gros :

$elapsed=time()-$clientList[$uid]['presence'];

si $elapsed > 25 alors il kill ce user.


Du coup cette fonction ne marchera que si le serveur recoit des message, on se fout un peu de la précision du test. Il aura tôt ou tard un client qui lui envera un message et cela lancera donc la fonction de test de presence.


Journalisée

Ma signature utilise un compte your-socket afin de dessiner/chatter en temps réel. Etant aussi sur media-box vous y trouverez aussi leurs membres Smiley.
<a href="http://ystutori.your-socket.com/mediabox/dessin.swf" target="_blank">http://ystutori.your-socket.com/mediabox/dessin.swf</a>
loupstigrou
Newbie
*
Messages: 26


Voir le profil
Re: Probleme de deconnexion du client
« Répondre #4 le: Février 28, 2010, 02:38:23 »

Ah super ça marche niquel merci ^^ Par contre, j'ai un autre probleme.. ^^"

Mon jeu est fait en plusieurs images clées. Mais quand j'appuis sur CTRL + flèche de droite ou de gauche du clavier, ça change d'image clée sur la timeline.. Et impossible de trouver pourquoi.. Une idée ? Je suis sur flash CS3 en actionscript 3.

Encore merci de nous apporter votre aide Smiley
Journalisée
loupstigrou
Newbie
*
Messages: 26


Voir le profil
Re: Probleme de deconnexion du client
« Répondre #5 le: Février 28, 2010, 05:48:48 »

Problème résolu, il faut en fait désactiver les raccourcis de Flash player en faisant :

fscommand("trapallkeys","true");

Voilà Smiley
Journalisée
Pages: [1] Imprimer 
« sujet précédent | | sujet suivant »
Aller à:  

Propulsé par MySQL Propulsé par PHP your-socket | Propulsé par SMF 1.0.5.
© 2001-2004, Lewis Media. Tous droits réservés.
XHTML 1.0 Transitionnel valide! CSS valide!

serveurs de sockets en java,perl,php,c++
serveurs de sockets en java,perl,php,c++