Apache Adobe Flex TutorialTutoriaux Adobe Flex & AIR en Français

21juin/081

Flex LocalConnection – Communication en Cross-Domain

Dans le tutorial Flex sur les LocalConnection simples, nous avons assumé le fait que les deux SWF qui communiquent sont sur le même domaine. Par défaut, Flash Player interdit les LocalConnection entre des SWF chargés depuis des domaines différents. Cependant, vous pouvez explicitement autoriser la communication en cross-domain pour le SWF récepteur.

Il y a deux types de communication cross-domain par une LocalConnection: les domaines connus et les domaines inconnus. La communication avec les domaines connus se présente lorsque les deux SWF communiquant se connaissent entre eux et connaissent les domaines sur lesquels ils sont hébergés. Cependant, il y a bien des cas pour lesquels les domaines ne sont pas connus au moment de la compilation. Par exemple, vous pouvez utiliser une LocalConnection pour créer une application type plug-in qui va interagir avec de nombreuses applications. Dans ce cas, vous ne connaîtrez pas nécessairement tous les domaines possibles à l'avance.

La technique pour les domaines inconnus fonctionne aussi bien pour les domaines connus qu'inconnus mais est plus laxiste. C'est pourquoi il est recommandé d'utiliser la communication avec domaines connus autant que possible.

Pour autoriser la communication cross-domain avec un domaine connu, vous devez faire deux choses:

  • Indiquer explicitement à l'objet LocalConnection récepteur d'autoriser les requêtes depuis le domaine contenant le SWF qui envoie
  • Préfixer le nom du canal avec le domaine du SWF récepteur.

Utilisez la méthode allowDomain() pour spécifier une liste de tous les domaines à autoriser.

Pour l'exemple suivant, le SWF qui envoie est hébergé sur www.a.com et le SWF récepteur est hébergé sur www.b.com. Le code suivant montre comment envoyer une requête:

var localConnection:LocalConnection = new LocalConnection();
localConnection.send("www.b.com:nomCanal","exempleMethode");

L'exemple suivant contient le code nécessaire pour récupérer une requête avec une application hébergée sur www.a.com:

var receivingLocalConnection:LocalConnection = new LocalConnection();
receivingLocalConnection.allowDomain("www.a.com");
receivingLocalConnection.connect("nomCanal");
receivingLocalConnection.client = this;

Lorsque les domaines sont inconnus, vous pouvez utiliser le joker (*) dans l'appel à allowDomain(), et plutôt que de préfixer le canal avec le domaine qui va recevoir, vous pouvez nommer le canal avec un underscore devant:

// SWF envoyeur

var localConnection:LocalConnection = new LocalConnection();
localConnection.send("_nomCanal","exempleMethode");

// SWF récepteur

var receivingLocalConnection:LocalConnection = new LocalConnection();
receivingLocalConnection.allowDomain("*");
receivingLocalConnection.connect("nomCanal");
receivingLocalConnection.client = this;

Articles similaires

Commentaires (1) Trackbacks (0)
  1. Bonjour,

    Merci beaucoup pour ce tutoriel bien expliqué/détaillé.

    Bon courage.


Leave a comment

(required)

Aucun trackbacks pour l'instant