【ブロードキャストチャネルエーピーアイ】
Broadcast Channel API とは?
💡 ブラウザのタブ同士がおしゃべりできる、同一サイト内のメッセージ交換窓口
📌 このページのポイント
複数タブ間でデータをやりとりしたいことってあるの?
使い方は簡単なの?
とてもシンプルだよ。送信側でnew BroadcastChannel('my-channel')を作ってpostMessage()するだけ。受信側も同じチャネル名でBroadcastChannelを作ってonmessageイベントを待つだけなんだ
localStorageのイベントでも似たようなことができなかったっけ?
よく知ってるね。storageイベントでもタブ間通信はできるけど、Broadcast Channelのほうが設計がクリーンなんだ。localStorageは永続化が目的で通信用じゃないし、文字列しか送れない。Broadcast Channelは構造化クローンで複雑なオブジェクトも送れるよ
Service Workerとも通信できるの?
できるよ。Service Workerも同じオリジンなら同じチャネルに参加できるんだ。プッシュ通知を受信したService Workerから、開いている全タブにデータを配信する、といった使い方もできるよ。マイクロフロントエンドの連携にも使われるケースが増えてきているね
📖 おまけ:英語の意味
「Broadcast Channel API」 = 放送チャネル API
💬 Broadcastは「放送する」という意味。テレビの放送のように、1つのメッセージを複数のタブに一斉に届けるイメージだよ