BroadcastChannel API: Giao tiếp giữa các tab hoặc cửa sổ trong trình duyệt

BroadcastChannel API là gì?

BroadcastChannel API là một API đơn giản giúp giao tiếp giữa các bối cảnh duyệt web dễ dàng hơn. Đó là, giao tiếp giữa các cửa sổ/tab, iframe, web workers và service workers. Messenger được push lên một channel nhất định sẽ được gửi đến tất cả người nghe của channel đó.

Sử dụng

Hàm tạo BroadcastChannel lấy một tham số duy nhất: tên của kênh. Tên xác định kênh và sống trên các bối cảnh duyệt web.

// Connect to the channel named "channel_name".
const channel = new BroadcastChannel('channel_name');

// Send a message on "channel_name".
channel.postMessage('This is a test message.');

// Listen for messages on "channel_name".
channel.onmessage = function(e) {
  console.log('Received', e.data);
};

// Close the channel when you're done.
channel.close(); 

Dữ liệu được hỗ trợ trong BroadcastChannel

Messages có thể là chuỗi hoặc bất cứ thứ gì được hỗ trợ bởi thuật toán nhân bản có cấu trúc (Strings, Objects, Arrays, Blobs, ArrayBuffer, Map).

Ví dụ – gửi Blob hoặc File

channel.postMessage(new Blob(['foo', 'bar'], {type: 'plain/text'}));

Một kênh sẽ không phát sóng đến chính nó. Vì vậy, nếu bạn có một onmessage trên cùng một trang với postMessage() cho cùng một kênh, sự kiện tin nhắn đó sẽ không kích hoạt.

Trình duyệt hỗ trợ BroadcastChannel API

Hiện tại, chỉ có Chrome 54+, Firefox 38+, Edge 79+ và Opera 41+ hỗ trợ BroadcastChannel API.

if ('BroadcastChannel' in self) {
   // BroadcastChannel API supported!
   console.log('BroadcastChannel API supported!');
 }

Trong trường hợp bạn muốn sử dụng cho tất cả browser, bạn có thể require project này https://github.com/pubkey/broadcast-channel

Demo

BroadcastChannel API Demo

Bạn có thể check Demo ở đây

Project on github

Oh My Zsh: Nâng cao trải nghiệm terminal với giao diện đẹp và các plugin tăng hiệu suất! Git cherry-pick là gì? Cách sử dụng và ví dụ Git Rebase: Gộp nhiều commit thành một để tối ưu hóa lịch sử commit 11 tính năng JavaScript mới tuyệt vời trong ES13 (ES2022) CSS diệu kỳ: Các thuộc tính CSS mà bạn có thể chưa biết Auto deploy projects với GitHub Actions – sử dụng ssh-action WordPress Gutenberg Block Server Side Render Add, Upload image trong Gutenberg Block Development Tạo Block Controls – Block Toolbar và Settings Sidebar trong WordPress Gutenberg Làm quen với các components thường dùng khi tạo Gutenberg Block

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.