Socket xml flash/PHP

cs_benoit5699 Messages postés 5 Date d'inscription mardi 19 février 2008 Statut Membre Dernière intervention 10 avril 2011 - 3 mars 2010 à 13:48
cs_benoit5699 Messages postés 5 Date d'inscription mardi 19 février 2008 Statut Membre Dernière intervention 10 avril 2011 - 3 mars 2010 à 14:15
Bonjour,
J'essaie en ce moment de faire échanger mon swf avec un serveur via une socket xml. Pour l'envoie vers le serveur ça marche nickel. Ensuite le serveur renvoie bien un xml vers le swf. Mais là impossible de récupérer quoique ce soit.


var theSocket:XMLSocket = new XMLSocket();
theSocket.connect('localhost', 2010);

function sendData() 
{
var myXML:XML = new XML();
var mySend = myXML.createElement("thenode");
mySend.attributes.myData = "someData";
myXML.appendChild(mySend);
theSocket.send(myXML);
};

// le bouton envoie des données
sendButton1.onRelease = function() 
{
sendData();
};

theSocket.onConnect = function(myStatus) 
{
if (myStatus) 
{
trace("connections successful");
}
else 
{
trace("no connection made");
}
};

theSocket.onData = function(msg):Void 
{
trace("1"+msg);
};

stop();



Du côté PHP j'ai codé ainsi :
<?php
//Temps maximum d'exécution de la page <couleur nom="rouge">nul</couleur>
set_time_limit(0);       

//Coordonnées du serveur == le pc qui lancera cette page
$port = 2010;
$adresse = "127.0.0.1";

//On crée la socket
if(($socket socket_create(AF_INET, SOCK_STREAM, 0)) false)
        echo 'La création de la socket a échoué : '.socket_strerror($socket)."\n
";
        
//On assigne la socket à une adresse et à un port, que l`on va écouter par la suite
if(($assignation = socket_bind($socket, $adresse , $port)) < 0)
        echo "L'assignation de la socket a échoué : ".socket_strerror($assignation)."\n
";

//On prépare l`écoute
if(($ecoute socket_listen($socket)) false)
        echo "L'écoute de la socket a échoué : ".socket_strerror($ecoute)."\n
";

//Le code se bloque jusqu`à ce qu'une nouvelle connexion client soit établie
if(($client socket_accept($socket)) false)
        echo "Le client n'a pas pu se connecter : ".socket_strerror($client)."\n
";
        
//Lors d'une connexion, le code reprend ici, il est temps de lire ce qu'on nous envoie
if(($reception socket_read($client , 255)) false)
        echo "La socket n'a pas pu être lue : ".socket_strerror($reception)."\n
";
else
 echo "La socket a pu être lue et le message est : ".htmlentities($reception).'
';
        
//Si ça ne marche pas, c'est qu`il est déconnecté
$reponse = $reception;
$reponse = '<thenode myData="someDataEnPlus" />0';
if(( socket_write($client, $reponse, strlen($reponse)) ) === false)
        echo "Client déconnecté\n
";
else
{
        echo 'Message envoyé : '.htmlentities($reponse).'';
}

//Fermeture de la socket du client
socket_close($client);

//Fermeture du serveur
socket_close($socket);
?>



A l'exécution, je lance le serveur, puis le flash. Le serveur tourne et dès que j'envoie les données du flash ça m'affiche côté serveur :
La socket a pu être lue et le message est : <thenode myData="someData" />
Message envoyé : <thenode myData="someDataEnPlus" />0


Tout est donc normal côté serveur sauf que le flash ne reçoit pas les données en retour. Or si je fait la même chose avec un client php et non flash ça marche très bien. Où est le hic ? Qu'ai je oublié ?

En effet du côté Flash je m'attends à voir mon message XML qui est tracé au retour or rien du tout !

Merci énormément de votre attention !!

Benoît
Benoît

1 réponse

cs_benoit5699 Messages postés 5 Date d'inscription mardi 19 février 2008 Statut Membre Dernière intervention 10 avril 2011
3 mars 2010 à 14:15
ok résolu : il faut rajouter un bit nul .chr(0) à la fin du message xml sinon flash ne déclenche pas le onData !
Benoît
0