Exporter (0) Imprimer
Développer tout

Messagerie de canal

Internet Explorer 10 et les applications du Windows Store en JavaScript introduisent la prise en charge de la messagerie de canal. La messagerie de canal permet au code de différents contextes de navigation de communiquer directement via des ports. Une fois les ports créés, les points de terminaison communiquent en utilisant une combinaison de la méthode postMessage et de l’événement onmessage.

Objet canal

Pour ouvrir un canal, créez un objet MessageChannel comme suit.


var channel = new MessageChannel();

L’objet canal contient les points de terminaison port1 et port2. Généralement, un port est conservé comme port local tandis que l’autre port est envoyé à la fenêtre ou au thread de travail distant. Des ports peuvent aussi permettre la communication entre des traitements.

Voici un exemple d’envoi d’un port à utiliser pour la communication entre des documents. Gardez à l’esprit que le tableau de ports doit être le dernier argument.


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

De la même façon, vous pouvez envoyer un point de terminaison de port à un thread de travail en utilisant postMessage, comme suit.


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

Le tableau de ports est envoyé dans la propriété ports de l’événement. Un port peut être utilisé une fois et fermé ou il peut être enregistré en local et utilisé autant de fois que nécessaire. L’exemple suivant montre comment un thread de travail peut recevoir et utiliser un port.


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

Une fois le port reçu, une voie de communication s’établit sur le port à l’aide des événements postMessage et onmessage. Le code suivant définit un gestionnaire d’événements et envoie un message à l’aide d’un port de messagerie de canal.


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

channel.port1.postMessage('hello');

La messagerie de canal permet de coordonner les effets d’éclairage entre les threads de travail dans la démonstration Web Worker Fountains consultable sur le site IE Test Drive. Pour obtenir une démonstration de messagerie complète, voir la page de référence d’objet MessageChannel.

API prises en charge

Dans Internet Explorer 10 et les applications du Windows Store en JavaScript, l’API de messagerie de canal prend en charge les interfaces suivantes.

Interface MessageChannel

Retourne un nouvel objet MessageChannel avec deux nouveaux objets MessagePort.

AttributTypeDescription
port1 MessagePort Le premier port.
port2 MessagePort Le second port.

 

Interface MessagePort

Chaque canal dispose de deux ports de messagerie. Les données envoyées via l’un des ports sont reçus par l’autre.

Les méthodes suivantes sont prises en charge :

MéthodeDescription

postMessage(quel que soit le message, dans les ports facultatifs) ;

Transmet un message via le canal.

start

Commence la diffusion des messages.

close

Déconnecte le port.

 

L’événement suivant est pris en charge :

ÉvénementDescription

onmessage

Données de message reçues.

 

Informations de référence sur les API

Web Messaging

Démonstrations du site Internet Explorer Test Drive

The Web Worker Fountains

Billets IEBlog

Traitements Web dans IE10 : JavaScript en arrière-plan rend les applications plus rapides

Spécification

HTML5 Web Messaging: Section 5

 

 

Afficher:
© 2014 Microsoft