HTML
 Computer >> コンピューター >  >> プログラミング >> HTML

HTML5のMessageChannelとMessagePortオブジェクトとは?仕組みと使い方を解説

MessageChannelオブジェクトとは

MessageChannelは、異なるブラウジングコンテキスト(iframeやWeb Workerなど)の間で安全にデータをやり取りするための通信路(チャネル)を生成するAPIです。チャネルを作成すると、内部的に2つのポート(MessagePort)が自動的に生成され、このポート同士を通じて双方向のメッセージ送受信が可能になります。

片方のポートを別のコンテキストへ転送することで、互いに直接参照できないウィンドウ同士でも、独立した専用の通信経路を確立できるのが大きな特徴です。

MessagePortの主なメソッド

  • postMessage() – チャネルを介してメッセージを送信します
  • start() – メッセージの送受信処理を開始します
  • close() – ポートを閉じて通信を終了します

実装例:iframe間でデータを送信する

以下の例では、あるiframeから別のiframeへデータを送信しています。関数内で受け取ったデータをDOMに渡す流れを実装したものです。

コード例

var loadHandler = function(){
    var mc, portMessageHandler;
    mc = new MessageChannel();
    window.parent.postMessage('documentAHasLoaded','https://foo.example',[mc.port2]);

    portMessageHandler = function(portMsgEvent){
        alert( portMsgEvent.data );
    }
    mc.port1.addEventListener('message', portMessageHandler, false);
    mc.port1.start();
}
window.addEventListener('DOMContentLoaded', loadHandler, false);

このコードでは、まずnew MessageChannel()で新しいチャネルを生成します。次にpostMessage()の第3引数として[mc.port2]を渡すことで、親ウィンドウへポートを転送しています。その後、手元に残ったport1に対してmessageイベントリスナーを登録し、start()を呼び出して通信を開始します。これにより、転送先のコンテキストとの間でメッセージのやり取りが行えるようになります。

  1. ステガノグラフィの長所と短所とは?メリット・デメリットを徹底解説

    ステガノグラフィとはステガノグラフィ(隠蔽術)とは、秘密にしておきたいメッセージを、別のメッセージやファイルの中に埋め込んで隠す技術です。これにより、隠されたメッセージそのものの存在が秘匿されます。対象となるのはテキストだけでなく、画像・動画ファイル・音声ファイルなど多岐にわたります。代表的な応用例が「電子透かし(ウォーターマーキング)」です。これは著作権情報などを文書やメディアに目視ではほぼ判別できない形で重ねて埋め込むもので、不正利用を防ぎ、著作権で保護されたコンテンツにより強固な保護を与えます。ステガノグラフィのメリット(長所)最大の利点は、「秘密のメッセージが送られている」という事実そ

  2. C#のクラスと構造体の違いとは?特徴と使い分けをわかりやすく解説

    クラス(Class)とはクラスは、データ型の設計図となるものです。クラス定義は class キーワードから始まり、その後にクラス名を記述します。クラスは参照型であり、インスタンスはヒープ上に生成され、変数にはそのメモリ上の場所を示す参照が格納されます。構造体(Struct)とは構造体は値型のデータ型です。1つの変数の中に、複数のデータ型からなる関連するデータをまとめて保持できるのが特徴です。構造体を作成するには struct キーワードを使用します。値型であるため、変数へ代入する際にはデータそのものがコピーされます。クラスと構造体の主な違い型の種類: クラスは参照型、構造体は値型です。継承: