Category Archives: Messaging

Flex: Um chat simples em menos de 20 linhas.

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:

  1. 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]

    [/xml]

    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]

    true

    [/xml]

  2. 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:
  3. [xml]

    [/xml]

    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:

    [xml]

    [/xml]

  4. 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]

    [/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.

[Download do Fonte]

ChatApp