gollunk
Messages postés22Date d'inscriptionmercredi 18 octobre 2006StatutMembreDernière intervention13 avril 2009
-
10 févr. 2009 à 22:32
gollunk
Messages postés22Date d'inscriptionmercredi 18 octobre 2006StatutMembreDernière intervention13 avril 2009
-
12 févr. 2009 à 13:00
Bonjour tout le monde,
Je me permet de poster ce sujet afin de demander de l'aide à plus
expérimenté que moi au sujet de la classe Socket car j'ai un
souci sur lequel je planche depuis un moment.
Mon but est de créé un petit chat avec la possibilité de diriger un
personnage dans un monde en 2D isométrique. Ceci implique l'envoi au
serveur de différentes données, à savoir:
-Une information permettant de prévenir tout les clients de l'arrivée d'un joueur et de pouvoir l'identifier par la suite.
-Des données "texte" pour communiquer avec les autres clients.
-Les données relatives à la position des joueurs et qui assure la gestion des mouvements.
Lors de l'envoi des données, j'utilise une sorte de trame que je
split ensuite dans un tableau et qui contient un type (LOGIN ou TEXTE).
A partir de ce type je lance une action spécifique dans la fonction de
réception des données ( pour TEXTE: afficher le texte et pour LOGIN:
enregistrer le login du joueur dans un tableau; je ne me suis pas
encore occupé de POSITION pour gérer les mouvements des joueurs).
J'en viens maintenant à mon problème qui est sans doute simple mais que je n'arrive pas à identifier:
La fonction de réception (voir socket.onData =
function(donnee:String)) se lance à chaque fois qu'une donnée est reçue
(car le trace(trame[0]) s'affiche correctement ) mais elle ne lance
qu'une seule fois une des conditions ( ici elle ne lance que case:
LOGIN mais si je n'envoie pas le login elle ne va lancer qu'une seule
fois le case:TEXTE ).
J'espère avoir été assez clair, demandez moi plus de précision si
vous en avez besoin, je vous remercie par avance de l'aide que vous
pourrez m'apporter
Code:
,
----
//Connexion au serveur
socket.connect("localhost", 1024);
socket.onConnect = connexion;
//Si la connexion est faite afficher un voyant vert:
function connexion(connecte){ if(connecte) _root.etat.gotoAndStop(2);}
//ENVOI DES DONNEES AU SERVEUR
//*****************************
//On prévient les clients de l'arrivée du joueur:
_root.socket.send("LOGIN|"+_root.login);
//Si on appuie sur le bouton ok on affiche le texte:
pegase31
Messages postés6138Date d'inscriptiondimanche 21 décembre 2003StatutModérateurDernière intervention 4 septembre 201312 11 févr. 2009 à 16:47
Je ne vois pas d'où vient ton problème, alors ... peut-être devrais-tu t'interesser au format des données que tu reçois .. et voir si un pré-traitement dans flash est nécessaire.
pegase31
Messages postés6138Date d'inscriptiondimanche 21 décembre 2003StatutModérateurDernière intervention 4 septembre 201312 12 févr. 2009 à 01:55
Il y a un truc qui me chagrine depuis ta première question : un server Socket envoie généralement du XML (c'est pour ça qu'on l'appelle XMLSocket) et je n'ai pas compris pourquoi tu récupérais un string ...
Je viens donc viens de taper "aquaserver" sur google pour savoir ce qu'il recrachait et le premier lien m'a donné ceci : 38491 http://flash.mediabox.fr/index.php?showtopic=38491
Et dans le tout premier post, on voit :
ATTENTION AquaServer ne renvoit pas
parfaitement l'xml qu'il a reçu, il rajoute des blancs. Pour les
retirer on utilise une petite fonction qui permet d'obtenir juste l'xml
sans les blancs :
<!--c1--><!--ec1-->// Fonction permettant d'obtenir l'xml en retirant les espaces qu'envoie aquaServer :
_connexion.onData = function(data:String) {
var doc:XML = new XML();
doc.ignoreWhite = true;
doc.parseXML(data);
parent.onReceiveXml(doc);
};
Tu n'as pas du chercher beaucoup car en 20 sec j'avais la réponse à ta question ... si j'avais su j'aurais fait ça en premier ...
Peg'
ps: la prochaine fois j'arrêterais de répondre en bossant ...
gollunk
Messages postés22Date d'inscriptionmercredi 18 octobre 2006StatutMembreDernière intervention13 avril 2009 12 févr. 2009 à 12:47
D'un côté je te remercie cordiallement, et d'un autre je me demande, effectivement, pourquoi tu me réponds... Que veux tu que je te dises ? Bien sûr que j'ai tapé AquaServer sur google, bien sûr que je me suis posé la question au sujet du XML. Si je prend la peine de poster un message ici c'est qu'il y a une bonne raison. Et si c'est de la tendance à faire son flemmard et à poser une question pour un rien sur les forums auquel tu fais allusion, ce n'est pas mon cas. Au final, je n'aurais pas du tout pensé à chercher du côté du serveur si tu ne m'en avais pas parlé et tu m'as trés bien orienté... pourquoi se plaindre ? Merci encore.
Vous n’avez pas trouvé la réponse que vous recherchez ?