Desenvolvimento - ActionScript

Comunicação entre dois aplicativos Flex usando uma conexão local na porta 8101

Esta artigo é traduzido pelo evangelist técnico Christophe Coenraets, do site blog, devido ao pedido de muitos desenvolvedores (inclusive eu) que ao ler seu blog, pediram um exemplo de como poderia ser feito tal situação.

por Igor Costa



Olá pessoal. O tema deste artigo é a comunicação entre dois aplicativos Flex usando uma conexão local na porta 8101.

Essa matéria é traduzida pelo evangelista técnico Christophe Coenraets, do site blog, devido ao pedido de muitos desenvolvedores (inclusive eu) que ao ler seu blog, pediram um exemplo de como poderia ser feito tal situação.

Demorou um tempo, mas aí está a resposta.

O exemplo trás a comunicação entre dois aplicativos flex rodando simultaneamente, e se estes poderiam se comunicar. A resposta é sim, a classe de palavras que um aplicativo flex envia a um arquivo para um evento em outro aplicativo em flex rodando ao mesmo tempo, como mostra o exemplo abaixo:

1. Aplicação de envio

Listagem 1: Aplicação de envio

<?xml version="1.0" encoding="utf-8"?>

<mx:Application xmlns:mx="http://www.macromedia.com/2003/mxml" initialize="initialize()">

    <mx:Script>

        var myConnection; // declara a variavel minhaConexao

        function initialize() {
            myConnection = new LocalConnection(); // usada como conexão local 
            myConnection.onStatus = mx.utils.Delegate.create(this, onStatus);
        }
				
	// cria a função de envio para a outra aplicação chamada de application_b
        function sendMessage() { 
            myConnection.send("application_b", "messagePosted", myMessage.text);
        }

        function onStatus(result) {// função de erro com operador ternário 
            status.text=result.level == "error"?"Operation failed":"Operation succeeded";
        }

    </mx:Script> // feito os procedimentos de script partiremos para a confecção da página 

    <mx:TextInput id="myMessage" />
    <mx:Button click="sendMessage()" label="Send"/>
    <mx:Label id="status"/>

</mx:Application>

Código Comentado:

myConnection = new LocalConnection(); Cria uma instancia de classe de conexão local

myConnection.onStatus = mx.utils.Delegate.create(this, onStatus); O evento onStatus é tomado depois do método chamado, fazendo com que você responda com sucesso ou falhe.

myConnection = new LocalConnection(); Cria uma instancia de classe de conexão local

myConnection.onStatus = mx.utils.Delegate.create(this, onStatus); O evento onStatus é tomado depois do método chamado, fazendo com que você responda com sucesso ou falhe.

myConnection.send("receivingapp", "messagePosted", myMessage.text);

  • "reveivingapp" é o nome de aplicativo receptor usado na conexão;
  • "messagePosted" É o evento que recebe da aplicação;
  • myMessage.text é um dado que passa a receber do aplicativo, vc pode passar os objetos ou multiplicar os valores separadamente.

2. Aplicativo que "Recebe"

Listagem 2: Aplicativo de "Recebimento"

<?xml version="1.0" encoding="utf-8"?>

<mx:Application xmlns:mx="http://www.macromedia.com/2003/mxml" initialize="initialize()">

    <mx:Script>

        var myConnection;

        function initialize() {
            myConnection = new LocalConnection();
            myConnection.messagePosted = mx.utils.Delegate.create(this, messagePosted);
            myConnection.connect("receivingapp");
        }

        function messagePosted(message) {
            messageList.text+=message+"\n";
        }

    </mx:Script>

    <mx:TextArea id="messageList" width="300" height="300"/>

</mx:Application>

Código Comentado:

myConnection = new LocalConnection(); Cria uma instância com classe da LocalConnection

>myConnection.messagePosted = mx.utils.Delegate.create(this, messagePosted); Deleta mensagem postada para função de mensagem enviada

myConnection.connect("receivingapp"); Conexão usada como "receivingapp" como nome de conexão

É isso ai pessoal o Flex mal saiu nas prateleiras e o pessoal já está devorando aos extremos, mas enfim, espero que tenham gostado da matéria do Christophe e aprendido um pouco.

Ao pessoal que participou dos testes por favor apareçam, estamos precisando da sua força.

Um grande abraço para todos e espero que dúvidas aparecam, as fontes da informações e informações adicionais podem ser encontradas relacionadas abaixo:

Documentações para começar com o Flex: livedocs.macromedia.com/flex

Igor Costa

Igor Costa - Igor Costa é consultor e desenvolvedor freelancer com 7 anos na plataforma Flash, escreve para o linha de código e revistas IT relacionadas, Igor é ex-membro Team da Macromedia para Flash. em seu site igorcosta.com, você encontra um pouco mais sobre o autor.
Atualmente presta consultoria e desenvolve em São Paulo Capital onde escolheu para morar.