Aller au contenu

XML socket

Un article de Wikipédia, l'encyclopédie libre.

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.

Articles connexes

[modifier | modifier le code]

Liens externes

[modifier | modifier le code]