Socket xml flash/PHP

Signaler
Messages postés
5
Date d'inscription
mardi 19 février 2008
Statut
Membre
Dernière intervention
10 avril 2011
-
Messages postés
5
Date d'inscription
mardi 19 février 2008
Statut
Membre
Dernière intervention
10 avril 2011
-
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

Messages postés
5
Date d'inscription
mardi 19 février 2008
Statut
Membre
Dernière intervention
10 avril 2011

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