Uma coisas mais excepcionais que o design do framework do Adobe Flex traz, é a facilidade de trabalhar com os serviços de mensageria. Toda a complexidade que existe nas soluções de mensageria como a do JMS do Java, no Flex, basicamente foi resumido ao <mx:Producer/> e <mx:Consumer/> (ver a documentação).
Assim como os outros meios de comunicação do Flex ( HttpService, WebService, RemoteObject ) o Consumer e Producer precisam de uma funcionalidade no back-end, em específico o DataService que está usando. Como por exemplo, no Java o DataService mais comum que contém essa funcionalidade é o Live Cycle Data Services e o BlazeDS, este OpenSource. No PHP, tem o WebOrb for PHP.
Como o título deste tópico informa, para provar que é muito simples trabalhar com mensageria no Flex, vamos criar um chat com nem 20 linhas (um total de linhas programadas e não de configuração) no Flex. Para tal façanha, primeiro escolha qual linguagem e DataService que irá utilizar no back-end. Eu estarei utilizando Java + BlazeDS.
Partindo do princípio que o BlazeDS já está integrado ao Java e com as configurações básicas:
- O primeiro passo é criar um canal de comunicação para trafegar as mensagens. Para isso, no arquivo services-config.xml do BlazeDS, adicione o seguinte canal:
XML:
-
<channel-definition id="streaming-amf" class="mx.messaging.channels.StreamingAMFChannel">
-
<endpoint url="http://localhost:8080/NOME_DA_APP/messagebroker/streamingamf" class="flex.messaging.endpoints.StreamingAMFEndpoint"/>
-
</channel-definition>
Esse é um canal de Streaming, e só irá funcionar se for executado em Http 1.1. Outra forma de utilizar os serviços de menssageria, é criar um canal AMF normal (AMFChannel) e ativar o polling, como no exemplo abaixo:
XML:-
<channel-definition id="polling-amf" class="mx.messaging.channels.AMFChannel">
-
<endpoint url="http://localhost:8080/NOME_DA_APP/messagebroker/amfpolling" class="flex.messaging.endpoints.AMFEndpoint"/>
-
<properties>
-
<polling-enabled>true</polling-enabled>
-
</properties>
-
</channel-definition>
-
- Criado o canal, vamos criar o destination na qual irá utilizar o canal. Para isso, crie se não existir um arquivo no mesmo diretório do services-config.xml com o nome de messaging-config.xml, nele coloque o seguinte conteúdo:
-
<?xml version="1.0" encoding="UTF-8"?>
-
<service id="message-service" class="flex.messaging.services.MessageService">
-
<adapters>
-
<adapter-definition id="actionscript" class="flex.messaging.services.messaging.adapters.ActionScriptAdapter" default="true" />
-
</adapters>
-
<default-channels>
-
<channel ref="streaming-amf"/>
-
</default-channels>
-
-
<destination id="chatMessage"/>
-
</service>
-
<services-config>
-
<services>
-
<service-include file-path="remoting-config.xml" />
-
<service-include file-path="messaging-config.xml" />
-
...
-
</services>
-
...
- Adicionado o destination (chatMessage), a configuração já está completa. Vamos agora criar a Interface do Chat junto com o Producer e Consumer (menos de 20 linhas):
XML:
-
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="consumer.subscribe()">
-
-
<mx:Consumer id="consumer" destination="chatMessage"
-
message="txtArea.htmlText += event.message.body as String"/>
-
<mx:Producer id="producer" destination="chatMessage"/>
-
-
<mx:TextArea id="txtArea" width="100%" height="100%" editable="false"/>
-
<mx:RichTextEditor id="inputDsMessage" width="100%" height="100%"/>
-
<mx:Button label="Enviar" click="producer.send( new AsyncMessage(inputDsMessage.htmlText) ); inputDsMessage.text='' "/>
-
-
<mx:Script>
-
<![CDATA[
-
import mx.messaging.messages.AsyncMessage;
-
]]>
-
</mx:Script>
-
</mx:Application>
-
Com o messaging-config.xml criado, é preciso informar ao services-config.xml que existem destinations de mensageria. Para isso adicione as linhas abaixo no services-config.xml:
Pronto! agora basta startar seu Container Web (no meu caso o TomCat) e abrir 2 browsers distintos e enviar as menssagens.
Atenção com o Firefox, pois ele armazena a mesma session para abas diferentes, e por default, o BlazeDS suporta uma conexão por cliente.
Para todo e qualquer erro, verifique sempre o console do Tomcat, ele sempre traz informações úteis para identificar os erros.
Bom demais, Digows! Abração e bom 2009 para vc!
Bom 2009 pra ti e sua famÃlia!!
Um forte abraço amigo!
\o/
muito bom… vlw!!!
e nois
31 de agosto de 2009
Alguem poderia me ajudar nao consegui fazer funcionar nao…
18 de fevereiro de 2010
Parabéns, funcionou perfeitamente no Chrome e no Firefox, porém no IE”ca” não funcionou. O que pode ser?
Comments RSS TrackBack Identifier URI
Deixe um comentário








6 Comentários