HTML5のチャネルメッセージングで実現するブラウジングコンテキスト間の双方向通信
チャネルメッセージングとは
ブラウジングコンテキスト間で双方向の通信を行う仕組みは「チャネルメッセージング」と呼ばれます。この機能は、異なるオリジン(ドメイン)間の通信にも利用できるため、クロスオリジン環境での安全なデータ交換に非常に役立ちます。
MessageChannelの仕組み
MessageChannel を生成すると、内部で自動的に2つのポートが作成されます。片方のポートからデータを送信すると、もう片方のポートを経由して別のブラウジングコンテキストへとデータが転送される仕組みです。
主なメソッド
- postMessage() − チャネルを介してメッセージを送信します
- start() − ポートでのデータ送受信を開始します
- close() − ポートを閉じて通信を終了します
実装例:iframe間でのデータ送信
次のコード例では、ある iframe から別の iframe へデータを送信しています。読み込み完了時にハンドラ関数が呼び出され、MessageChannel の生成、親ウィンドウへのポート転送、メッセージ受信時のアラート表示までを一連の流れとして実装しています。
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);
この例では、DOMContentLoaded イベントをトリガーに loadHandler が実行され、port1 側でメッセージリスナーを登録したうえで通信を開始します。一方、port2 は postMessage() の第3引数として配列形式で親ウィンドウへ転送されており、これにより2つのコンテキスト間に独立した通信チャネルが確立されます。
-
APFSとHFS+の違いとは?データ復旧の観点から徹底比較
Macユーザーなら一度は耳にする「APFS」と「HFS+」。この2つのファイルシステムには、いったいどのような違いがあるのでしょうか。APFSはApple File System(アップルファイルシステム)、HFSはHierarchical File System(階層型ファイルシステム)を指します。APFSは、技術面およびデータ復旧の面で新たな進化をもたらしました。 本記事では、APFSとHFS+の違いについて詳しく解説します。まずAPFS(Apple File System)とは何かを説明し、続いてHFSおよびHFS+(Mac OS拡張フォーマット)の概要をご紹介します。そのうえで、両者の
-
LiFi(ライファイ)とは?LEDの光でデータを送る次世代通信技術の仕組みとWi-Fiとの違い
お宅の中を見渡してみてください。ほぼすべての電子機器・電気製品に共通して備わっているものは何でしょうか?そう、「インターネット接続」です。では、モバイルネットワークやWi-Fiルーターと同じように、あのLED照明でも通信ができるとしたらどうでしょう?信じられないかもしれませんが、これは実在する驚くべき技術なのです。 この技術は、「光無線通信(Optical Wireless Communication)」というカテゴリーに属する新しい通信方式です。光無線通信とは、光ファイバーなどのケーブルを使わずに光で通信を行う方式すべてを指します。 可視光通信(VLC)とは LEDライトを使ったデータ転送・