1. Web
  2. Web-APIs
  3. AudioWorkletNode
  4. port

Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

AudioWorkletNode: port-Eigenschaft

Baseline Weitgehend verfügbar

Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit April 2021 browserübergreifend verfügbar.

Sicherer Kontext: Diese Funktion ist nur in sicheren Kontexten (HTTPS) in einigen oder allen unterstützenden Browsern verfügbar.

Die schreibgeschützte port-Eigenschaft der AudioWorkletNode-Schnittstelle gibt den zugehörigen MessagePort zurück. Er kann verwendet werden, um zwischen dem Knoten und seinem zugehörigen AudioWorkletProcessor zu kommunizieren.

Hinweis: Der Port am anderen Ende des Kanals ist unter der port-Eigenschaft des Prozessors verfügbar.

Wert

Das MessagePort-Objekt, das die Verbindung zwischen dem AudioWorkletNode und seinem zugehörigen AudioWorkletProcessor herstellt.

Beispiele

Um die bidirektionalen Kommunikationsfähigkeiten zu demonstrieren, erstellen wir einen AudioWorkletProcessor, der Stille ausgibt und auf Ping-Anfragen von seinem AudioWorkletNode reagiert.

Zuerst müssen wir einen benutzerdefinierten AudioWorkletProcessor definieren und registrieren. Beachten Sie, dass dies in einer separaten Datei erfolgen sollte.

js
// ping-pong-processor.js
class PingPongProcessor extends AudioWorkletProcessor {
 constructor(...args) {
 super(...args);
 this.port.onmessage = (e) => {
 console.log(e.data);
 this.port.postMessage("pong");
 };
 }
 process(inputs, outputs, parameters) {
 return true;
 }
}
registerProcessor("ping-pong-processor", PingPongProcessor);

Nun laden wir in unserer Hauptskriptdatei den Prozessor, erstellen eine Instanz von AudioWorkletNode unter Angabe des Prozessornamens und verbinden den Knoten mit einem Audiographen.

js
const audioContext = new AudioContext();
await audioContext.audioWorklet.addModule("ping-pong-processor.js");
const pingPongNode = new AudioWorkletNode(audioContext, "ping-pong-processor");
// send the message containing 'ping' string
// to the AudioWorkletProcessor from the AudioWorkletNode every second
setInterval(() => pingPongNode.port.postMessage("ping"), 1000);
pingPongNode.port.onmessage = (e) => console.log(e.data);
pingPongNode.connect(audioContext.destination);

Dies wird jede Sekunde die Strings "ping" und "pong" in die Konsole ausgeben.

Spezifikationen

Spezifikation
Web Audio API
# dom-audioworkletnode-port

Browser-Kompatibilität

Siehe auch

Help improve MDN

Erfahren Sie, wie Sie beitragen können Diese Seite wurde automatisch aus dem Englischen übersetzt.

AltStyle によって変換されたページ (->オリジナル) /