Spec-Zone.ru › Web APIs

API канала широковещательной передачи

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

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

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

Примечание: Эта функция доступна в Потоках выполнения JavaScript.

API канала широковещательной передачи позволяет осуществлять базовый обмен данными между контекстами просмотра (то есть, окнами, вкладками, кадрами или фреймами iframes) и потоками выполнения на том же исходе.

Примечание: Точнее, обмен данными разрешен между контекстами просмотра, использующими ту же разделённую область хранилища. Хранилище разделяется в первую очередь по сайтам верхнего уровня — например, если у вас открыта одна страница по адресу a.com , которая встраивает iframe с адреса b.com, и другая страница открыта по адресу b.com, то iframe не сможет общаться со второй страницей, несмотря на то, что они находятся на одном и том же исходе. Однако, если первая страница также находится по адресу b.com, то iframe сможет общаться со второй страницей.

Создав объект BroadcastChannel, вы можете получать любые сообщения, отправленные в него. Вам не нужно хранить ссылки на фреймы или потоки выполнения, с которыми вы хотите обмениваться данными: они могут «подписаться» на конкретный канал, создав свой собственный объект BroadcastChannel с тем же именем, и осуществлять двусторонний обмен данными между всеми объектами.

The principle of the Broadcast Channel API

Интерфейс канала широковещательной передачи

Создание или присоединение к каналу

Клиент присоединяется к каналу широковещательной передачи, создавая объект BroadcastChannel. Его конструктор принимает один параметр: имя канала. Если это первый подключившийся к каналу с таким именем, то подразумевающий канал создается.

// Connection to a broadcast channel
const bc = new BroadcastChannel("test_channel");

Отправка сообщения

Достаточно вызвать метод postMessage() на созданном объекте BroadcastChannel, который принимает любой объект в качестве аргумента. Пример с текстовым сообщением:

// Example of sending of a very simple message
bc.postMessage("This is a test message.");

Данные, отправляемые в канал, сериализуются с помощью алгоритма структурированного клонирования. Это означает, что вы можете безопасно отправлять различные объекты данных без необходимости их самостоятельной сериализации.

API не накладывает никаких ограничений на семантику сообщений, поэтому код должен сам понимать, какие сообщения ожидать и как с ними обращаться.

Получение сообщения

При отправке сообщения событие message отправляется каждому объекту BroadcastChannel, подключенному к этому каналу. Функция может быть запущена для этого события с помощью обработчика событий onmessage:

// A handler that only logs the event to the console:
bc.onmessage = (event) => {
  console.log(event);
};

Отключение канала

Чтобы выйти из канала, вызовите метод close() на объекте. Это отключает объект от базового канала, позволяя сборку мусора.

// Disconnect the channel
bc.close();

Заключение

Самодостаточный интерфейс API канала широковещательной передачи позволяет обмениваться данными между контекстами. Его можно использовать для определения действий пользователя в других вкладках того же исхода, например, при входе или выходе пользователя.

Протокол обмена сообщениями не определен, и разные контексты просмотра должны реализовывать его сами; не существует никаких переговоров или требований со стороны спецификации.

Интерфейсы

BroadcastChannel

Представляет собой именованный канал, к которому любой контекст просмотра данного исхода может подключиться.

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

Спецификация
HTML
# broadcasting-to-other-browsing-contexts

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

Рабочие столы Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome для Android Firefox для Android Opera для Android Safari для iOS Samsung Internet WebView для Android
BroadcastChannel 54 79 38 41 15.4 54 38 41 15.4 6.0 54
Broadcast_Channel_API 54 79 38 41 15.4 54 38 41 15.4 6.0 54
close 54 79 38 41 15.4 54 38 41 15.4 6.0 54
message_event 54 79 38 41 15.4 54 38 41 15.4 6.0 54
messageerror_event 60 79 57 47 15.4 60 57 47 15.4 8.0 60
name 54 79 38 41 15.4 54 38 41 15.4 6.0 54
postMessage 54 79 38 41 15.4 54 38 41 15.4 6.0 54

См. также

  • BroadcastChannel, интерфейс, его реализующий.

© 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/Broadcast_Channel_API

Spec-Zone.ru

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