Aide - Recherche - Membres - Calendrier
Version complète : LocalConnection entre 2 applis AIR
Centre de Formation Flash - Forums Adobe Flash > Rich media et intégration > AIR
Fidiman
Hello,

Qui aurait déja réussi à faire communiquer 2 applis air par localconnection ?

merci.
Fidiman
Citation (Fidiman @ Oct 1 2008, 11:16 AM) *
Hello,

Qui aurait déja réussi à faire communiquer 2 applis air par localconnection ?

merci.



Oups, désolé j'ai dupliquer le post, je demandais déja la méme chose dans une réponse à autre post.

Bon alors j'ai un bout d'info là :

http://livedocs.adobe.com/air/1/devappsfla...ications_1.html


Mais j'ai essayé et ca ne marche.
Fidiman
Ayé, j'ai trouvé, c'est sympa Air, on a l'impression de jouer au cluedo en même temps.


Voici la soluce pour faire communiquer 2 applis air :

L'appli 1 qui ouvre le canal et qui "écoute" aura ce code (comme d'hab pour une localConnection ) :

Action Script

var conn:LocalConnection;
conn = new LocalConnection();
conn.client = this;
conn.allowDomain("*");


try {
conn.connect("nomDuChanel");
displayMessage("connexion établie");
} catch (error:ArgumentError) {
displayMessage("Can't connect... " + error);
}

// un composant textarea sur la scéne
function displayMessage(msg:String):void
{
outputTa.appendText(msg + "\n");
}


Et pour l'appli 2 qui envoie, c'est un peu plus compliqué car les applis air sont dans un domaine particulier

Action Script

var DOMAIN:String = 'com.example.monAppli1'; // voir dans le panneau parametre avancé
var CHECK:String = '.353A280392C3F5601F8A1D4216EF4CFA7374A0B7.1'; // voir dans le dossier de l'appli installé -> META-INF -> air -> publisherID
var TYPE:String = 'app'; // pour dire que c'est du air
var CONNECTION:String = 'nomDuChanel'; // le nom du chanel ouvert par la première appli

var channel:String = TYPE + '#' + DOMAIN + CHECK + ':' + CONNECTION; // ce qui donne une grosse chaine
// app#com.example.monAppli1.353A280392C3F5601F8A1D4216EF4CFA7374A0B7.1:nomDuChanel


var conn:LocalConnection;
conn = new LocalConnection();


conn.addEventListener(StatusEvent.STATUS, onStatus);

function sendMessage(event:MouseEvent):void
{
conn.send(channel , "displayMessage", inputTi.text); // invoque la méthode displayMessage dans appli1
}


// mettre un composant textarea sur la scene et lui donner le nom outputTa
function onStatus(event:StatusEvent):void
{
switch (event.level)
{
case "status":
outputTa.appendText("LocalConnection.send() succeeded");
break;

case "error":
outputTa.appendText("LocalConnection.send() failed" + event);
break;
}
}

// un petit composant bouton
sendBtn.addEventListener(MouseEvent.CLICK, sendMessage);


Le truc embetant c'est qu'une partie du chanel de connexion fonctionne avec publisherId qui n'est disponible qu'une fois l'appli publié et installé sur la machine.
Donc si vous testez avec les 2 applis depuis l'ide de flash, ca ne marche pas.

Voila, j'espére que ça servira à quelqu'un. icon_lol.gif
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'informations, la mise en page et les images, veuillez cliquer ici.
Invision Power Board © 2001-2009 Invision Power Services, Inc.