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
[modifier | modifier le code]Flash a été la première technologie à proposer le protocole XMLSocket du côté client.
ActionScript 2.0
[modifier | modifier le code]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
[modifier | modifier le code]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
[modifier | modifier le code]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
[modifier | modifier le code]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
[modifier | modifier le code]Articles connexes
[modifier | modifier le code]Liens externes
[modifier | modifier le code]- 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