Spec-Zone.ru › Web APIs

AudioWorkletNode: свойство port

Базовая Широко доступная

Эта функция хорошо отработана и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с апреля 2021 года.

  • Подробнее
  • Полная совместимость
  • Отправить отзыв

Безопасный контекст: Эта функция доступна только в безопасных контекстах (HTTPS), в некоторых или во всех поддерживающих браузерах.

Только для чтения port свойство интерфейса AudioWorkletNode возвращает связанный MessagePort. Его можно использовать для связи между узлом и его связанным AudioWorkletProcessor.

Примечание: Порт на другом конце канала доступен через свойство port процессора.

Значение

Объект MessagePort, который соединяет AudioWorkletNode и его связанный AudioWorkletProcessor.

Примеры

Для демонстрации возможностей двусторонней связи мы создадим AudioWorkletProcessor, который будет выдавать тишину и отвечать на запросы ping от его AudioWorkletNode.

Сначала нам нужно определить пользовательский AudioWorkletProcessor, и зарегистрировать его. Обратите внимание, что это следует делать в отдельном файле.

// 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);

Теперь в нашем основном файле скриптов мы загрузим процессор, создадим экземпляр AudioWorkletNode, передав имя процессора, и подключим узел к аудио графу.

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);

Это выведет "ping" и "pong" строки в консоль каждую секунду.

Спецификации

Спецификация
Web Audio API
# dom-audioworkletnode-port

Совместимость браузеров

Рабочие столы Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на IOS Samsung Internet WebView Android
port 66 79 76 53 14.1 66 79 47 14.5 9.0 66

См. также

  • Web Audio API
  • Использование Web Audio API

© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/AudioWorkletNode/port

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API