XML socket
XMLSocket est un protocole implémenté par le langage ActionScript qui permet à une animation Adobe Flash de communiquer au-dessus de TCP grâce à des Sockets. Il permet le transfert de données textuelles brutes (texte) ou hiérarchiques (XML, xHTML). Il est souvent utilisé dans des applications de chat et de jeux multijoueurs[Lesquelles ?].
Le protocole est le suivant :
- des messages XML sont envoyés en full duplex grâce à une connexion TCP/IP utilisant les sockets ;
- chaque message XML est un document XML terminé par des bits de zéro ;
- une quantité illimitée de messages XML peuvent être envoyés et reçus au sein d'une seule connexion.
Client Flash
Flash a été la première technologie à proposer le protocole XMLSocket du côté client.
ActionScript 2.0
Le code pour afficher un Hello world en ActionScript 2.0 est le suivant :
Le socket utilise le port 8463 sur la machine locale et le mode echo est actif.
var xmlSocket:XMLSocket = new XMLSocket();
xmlSocket.onConnect = function () {
xmlSocket.send(new XML("<message><text>Hello, World!</text></message>"));
};
xmlSocket.onXML = function (myXML) {
trace(myXML.firstChild.childNodes[2].firstChild.nodeValue);
xmlSocket.close();
};
xmlSocket.connect("localhost", 8463);
ActionScript 3.0
Ci-dessous exemple d'une connexion xmlSocket en ActionScript 3.0 :
var xml_s = new XMLSocket();
xml_s.connect(ip, port);
xml_s.addEventListener(Event.CONNECT, xmlsocket);
xml_s.addEventListener(Event.CLOSE, xmlsocket);
xml_s.addEventListener(IOErrorEvent.IO_ERROR, xmlsocket);
function xmlsocket(Event):void {
switch (Event.type) {
case 'ioError' :
// Unable to Connect
break;
case 'connect' :
// Connected
break;
case 'close' :
// OnDisconnect
break;
}
}
Client Silverlight
Silverlight supporte l'utilisation des sockets dans son espace de nom System.Net.Sockets
. Le protocole est asynchrone et utilise le port 4502 à 4534. La communication peut avoir lieu entre un client et plusieurs serveurs (cross-domain socket) à condition qu'un fichier définisse les règles de sécurité sur le serveur primaire.
Silverlight 1.1 et 2.0
Silverlight utilise un format basé sur du XML pour contrôler l’accès aux ressources par domaines interposés. En plus, Silverlight supporte aussi le format Adobe Flash régissant les accès inter-domaines. Silverlight 2 à partir de la bêta 1 ajoute aussi un support pour les communications réseaux, utilisant les sockets à travers IPv4 et IPv6. Silverlight 2.0 supporte aussi la programmation asynchrone, par l’utilisation des bibliothèques de « threading ». Cependant, les sockets Silverlight sont plus restrictives. Elles peuvent communiquer uniquement avec l’hôte qui a lancé l’application au départ, et les numéros de port sont restreints du numéro 4502 à 4532. Les prochaines versions pallieront ce problème. Les sockets Silverlight peuvent uniquement initier une connexion, elles ne peuvent être en attente.
Voir aussi
Articles connexes
Liens externes
- XML Sockets: the basics of multiplayer games, gotoAndPlay Flash Tutorials
- XMLSocket Simplified, Heliant Whitepaper for ActionScript
- Utilizing Flash Player XMLSockets for JavaScript applications
- Palabre, Simple open source XML socket server for Flash written in python
- Portail de la programmation informatique