Olá galera, tudo certin?
Depois de dois dias falando sobre arquitetura, estou voltando a minha jornada por esse fantástico novo mundo do HTML5.
Sobre o que trata esse post? Messaging.
Você já construiu widgets para páginas Web? Sim? E como você fez para permitir que a aplicação host (aquela que tem o iFrame) fizesse contato com seu Widget? Source do Iframe? Diga que não! A especificação Messaging serve exatamente para isso.
Sem mais delongas,
O que já vimos?
Para você que está chegando agora, veja sos aspectos que já abordei:
- HTML5 – Parte 7 – Suporte para offline
- HTML5 – Parte 6 – Armazenando dados com Web SQL Databases
- HTML5 – Parte 5 – Armazenando dados com Web Storage
- HTML5 – Parte 4 – Vídeo e Áudio
- HTML5 – Parte 3 – Formulários
- HTML5 – Parte 2 – Semântica para todos
- HTML5 – Parte 1 – história e elementos de estrutura
A API para Messaging
O suporte Messaging, definido na especificação do HTML5 tem grande suporte. Sim, até o Internet Explorer implementou direitinho essa parte da especificação (Muito bem, IE).
Como a coisa funciona? Na prática, a API parmite a um domínio “postar” texto simples para outro domínio. Para isso:
- o host utiliza o método postMessage para “enviar” a mensagem;
- o widget assina um evento para “escutar” as mensagens que lhe forem enviadas.
O método postMessage recebe dois parâmetros:
- mensagem que desejamos enviar (string);
- endereço do domínio onde está o widget (nosso alvo).
O evento recebe um objeto do tipo MessageEvent que contém, entre suas propriedades, duas que merecem destaque:
- data – mensagem enviada;
- origin – endereço do domínio que enviou a mensagem (permitindo resposta);
E é tudo que precisamos…
Um exemplo (muito simples)
Para criar um exemplo muito simples, criei duas páginas no IIS. A principal, contém apenas um documento: host.html
O que eu fiz?
- criei um frame hospedando meu widget (repara que está em localhost, em outra porta… poderia ser qualquer “outro” domínio);
- criei um botão para acionar o envio da mensagem;
- nas linhas 6, 7 e 8, recupero o frame, onde mais tarde (linha 10) recupero o objeto “document”; É esse objeto que tem o método postMessage;
- a chamada para postMessage (que ocorre na linha 10) é muito simples
- no primeiro parâmetro passo a mensagem (poderia ser qualquer string);
- no segundo parâmetro, estou passando o endereço do domínio do widget;
Simples? E o widget …
O que eu fiz? Assinei o evento e mostrei para o usuário os dados recebidos em data e origin.
Aqui, o céu é o limite! O widget pode mudar a aparência… Você pegou a idéia.
Respondendo…
Ok! Já mostrei que um aplicativo Host pode, usando a API de Messaging, enviar mensagens para um Widget. Perfeito! Mas e se o Widget desejasse responder ao aplicativo HOST? Observe:
O que eu fiz? Utilizei uma propriedade source do parâmetro recebido no evento para mandar uma mensagem de volta para o caller. Simples?
Mas só string?
Claro que não, cabeção! Serialize seus objetos como JSON no sender e realize o parse no lado cliente.
Definindo HTML5
Como prometido, durante essa série, na medida em que vamos conhecendo mais detalhes do HTML5, vou tentar ir criando uma definição para a linguagem. Nossa definição hoje fica assim:
HTML5 é a nova versão do HTML (anterior era 4.01) – uma linguagem para desenvolvimento de aplicações web online e offline – que está sendo desenvolvida pelo W3C e pelo WHATWG. Dá mais ênfase para o significado do conteúdo que para como que escrevemos documentos. Além disso, simplifica a criação de formulários e players de áudio/vídeo reduzindo a necessidade de código JavaScript ou plugins. Define duas novas API de persistência, superiores ao cookies, sendo que uma delas é um banco de dados SQL. Tem suporte consistente para Messaging.
O que vocês acharam?
Por enquanto, é o que temos. Vamos avançar mais nos estudos para poder complementar essa definição!
Por hoje, é isso!
Paulo
16/05/2011
Muito boa sua iniciativa amigo, sucesso!