Channelnachrichten

In Internet Explorer 10 und Windows Store-Apps mit JavaScript werden jetzt auch Channelnachrichten unterstützt. Mit Channelnachrichten kann Code in unterschiedlichen Browserkontexten direkt über Ports kommunizieren. Nachdem die Ports erstellt sind, kommunizieren die Endpunkte mit einer Kombination aus der postMessage-Methode und dem onmessage-Ereignis.

Das channel-Objekt

Um einen Channel zu öffnen, erstellen Sie wie folgt ein neues MessageChannel-Objekt.


var channel = new MessageChannel();

Das Channelobjekt enthält port1- und port2-Endpunkte. In der Regel wird ein Port als lokaler Port beibehalten und der andere an das Remotefenster oder den Remoteworker gesendet. Ports ermöglichen auch die Kommunikation zwischen Workern.

Ein Beispiel für das Senden eines Ports, der für die dokumentübergreifende Kommunikation verwendet wird. Beachten Sie, dass das Array der Ports das letzte Argument sein muss.


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

Dementsprechend können Sie mit postMessage wie folgt einen Portendpunkt an einen Workerthread.


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

Das Array der Ports wird in der ports-Eigenschaft des Ereignisses gesendet. Ein Port kann einmalig verwendet und dann geschlossen werden, oder er kann lokal gespeichert und bei Bedarf wiederholt verwendet werden. Das folgende Beispiel zeigt, wie ein Workerthread einen Port empfangen und verwenden könnte.


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

Nach dem Erhalt des Ports erfolgt die weitere Kommunikation über den Port, wobei hierfür die Ereignisse postMessage und onmessage verwendet werden. Der folgende Code definiert einen Ereignishandler und sendet eine Nachricht über einen Channelnachrichtenport.


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

channel.port1.postMessage('hello');

Über Channelnachrichten werden Beleuchtungseffekte zwischen Workerthreads in der Demonstration Webworker-Fountains koordiniert. Sie können sich diese in der IE-Testversion ansehen. Eine vollständige Demo für Nachrichten finden Sie auf der Referenzseite für MessageChannel-Objekte.

Unterstützte APIs

In Internet Explorer 10 und Windows Store-Apps mit JavaScript unterstützt die Channelnachrichten-API die folgenden Schnittstellen.

Die MessageChannel-Schnittstelle

Gibt ein neues MessageChannel-Objekt mit zwei neuen MessagePort-Objekten zurück.

AttributTypBeschreibung
port1 MessagePort Der erste Port.
port2 MessagePort Der zweite Port.

 

Die MessagePort-Schnittstelle

Jeder Channel besitzt zwei Nachrichtenports. Die über einen Port gesendeten Daten werden vom anderen empfangen.

Die folgenden Methoden werden unterstützt:

MethodeBeschreibung

postMessage(in allen Nachrichten, in optionalen Ports);

Veröffentlicht eine Nachricht über den Channel.

start

Beginnt mit der Verteilung von Nachrichten.

close

Trennt die Verbindung mit dem Port.

 

Das folgende Ereignis wird unterstützt:

EreignisBeschreibung

onmessage

Empfangene Nachrichtendaten.

 

API-Referenz

Web Messaging

Demos für die Internet Explorer-Testversion

Webworker-Fountains

IEBlog-Beiträge

Web-Workers in IE10: JavaScript im Hintergrund beschleunigt Web Apps

Spezifikation

HTML5-Webnachrichten: Abschnitt 5

 

 

Anzeigen:
© 2014 Microsoft