Exportar (0) Imprimir
Expandir Tudo

Mensagens de canal

O Internet Explorer 10 e os aplicativos da Windows Store em JavaScript agora são compatíveis com as mensagens de canal. As mensagens de canal permitem código em diferentes contextos de navegação para se comunicarem diretamente via portas. Depois que as portas são criadas, os pontos de extremidade se comunicam usando uma combinação do método postMessage e do evento onmessage.

O objeto canal

Para abrir um canal, crie um novo objeto MessageChannel como se segue.


var channel = new MessageChannel();

O objeto do canal contém ambos os pontos de extremidade port1 e port2. Normalmente, uma porta é mantida como a porta local, e a outra é enviada para a janela remota ou trabalho remoto. As portas também podem permitir a comunicação entre os trabalhos.

Veja um exemplo do envio de uma porta a ser usada para comunicação entre documentos. Lembre-se de que a matriz de portas deve ser o último argumento.


otherWindow.postMessage('hello', 'http://example.com', [channel.port2]);

Da mesma forma, você pode enviar um ponto de extremidade de porta para um thread de trabalho usando postMessage, como se segue.


worker.postMessage({code:"port"}, [channel.port2]);

A matriz de portas é enviada como a propriedade ports do evento. Uma porta pode ser usada uma vez e fechada, ou pode ser salva localmente e usada diversas vezes, se necessário. O exemplo a seguir mostra como um thread de trabalho pode receber e usar uma porta.


// Worker Thread 
onmessage = function (event) {
    if (event.data.code == "port") {
        event.ports[0].postMessage("Port received.");
    }
}

Depois que a porta é recebida, a comunicação adicional ocorre na porta usando os eventos postMessage e onmessage. O código a seguir define um manipulador de eventos e envia uma mensagem usando uma porta de mensagens de canal.


channel.port1.onmessage = function (event) {
  // Message is in event.data
  alert("Message is: " + event.data);
}

channel.port1.postMessage('hello');

As mensagens de canal são usadas para coordenar efeitos de iluminação entre threads de trabalho na demonstração Web Worker Fountains. Verifique no Test Drive do IE. Para obter uma demonstração completa das mensagens, veja a página de referência do objeto MessageChannel.

APIs com suporte

No Internet Explorer 10 e nos aplicativos da Windows Store que usam JavaScript, o API de Mensagens de Canal dá suporte às seguintes interfaces.

A interface MessageChannel

Retorna um novo objeto MessageChannel com dois novos objetos MessagePort.

AtributoDigiteDescrição
port1 MessagePort A primeira porta.
port2 MessagePort A segunda porta.

 

A interface MessagePort

Cada canal tem duas portas de mensagens. Os dados enviados através de uma porta são recebidos pela outra.

Os seguintes métodos têm suporte:

MétodoDescrição

postMessage(em qualquer mensagem, em portas opcionais);

Publica uma mensagem através do canal.

start

Começa a expedir as mensagens.

close

Desconecta a porta.

 

O seguinte evento tem suporte:

EventoDescrição

onmessage

Dados da mensagem recebidos.

 

Referência de API

Web Messaging

Demonstrações do Test Drive do Internet Explorer

As fontes do Web Worker

Postagens no blog do IE

Web Workers no IE10: o JavaScript em segundo plano deixa aplicativos Web mais rápidos

Especificação

Mensagens da Web em HTML5: Seção 5

 

 

Mostrar:
© 2014 Microsoft