Web教材一覧ネットワーク

リアルタイムWeb

キーワード

リアルタイムWeb、双方向Web、双方向通信、Ajax、Comet、WebSocket


リアルタイムWebとは

双方向Web、双方向通信ともいいます。地図の移動・拡大や株価の表示など、リアルタイムにWebページを動的に更新する技術です。

リアルタイムWebの技術

多様な実現技術がありますが、WebブラウザとJavaScriptだけで構築できるものが主流です。その代表的なものに Ajax、 Comet、WebSocketがあります。

Ajax(Asynchronous JavaScript + XML )

JavaScriptのXMLHttpRequestオブジェクトを使って,WebブラウザとWebサーバとがXML形式のデータを用いて非同期の通信をし、動的に画面を再描画する仕組みです。
 主に、サーバのコンテンツには変化が少なく、利用者の操作を便利にしたいような目的に用います。

代表的な利用例にGoogleマップがあります。ここではWebページの一部に地図があり、マウス操作などで地図だけをを拡大したり移動したりしたいとします。

Ajaxを用いないとき

このように、送信-返信の繰り返しで通信することを同期通信といいます。Ajaxを用いないときは同期通信ですので、Webサーバから返信がくるまでは、Webブラウザは他の操作ができません。

Ajaxを用いるとき

Ajaxを用いると、JavaScriptがマウスの動きを検知し、現在表示されていない地図のデータ部分を計算し、足りない部分をWebサーバにリクエストします。Webサーバは不足部分の地図データをJavaScriptに返し、JavaScriptは地図を補正して表示します。

Comet

Ajaxはクライアントからのリクエストで動作するプル型のリアルタイムWebなのに対して、Cometはサーバで発生したイベントをクライアントからの要請なしにクライアントに送信するプッシュ型のリアルタイムWebです。
 サーバのコンテンツが頻繁に変化し、更新があったときにWebページを更新するような用途に適しています。

代表的な例がチャット(インスタントメッセンジャ)です。
 チャットとは、ネットワーク上で、リアルタイムに複数の人が会話(通常は文章)を交わすことです。メーリングリストや電子掲示板などは、入力してから見るまでに時間がかかりますし、入力するまでの手続きが煩雑です。チャットでは、黒板に相互に書き入れるように、簡単にリアルタイムに会話ができます。

Cometの仕組み

チャットには幾つかの形式がありますが、ここではCometを使ったWebチャットを対象にします。このアプリケーションは、WebブラウザとJavaScriptで構築できます。JavaScriptは発言用と受信用のモジュールがあり、自由に切り替えることができます。

ポーリング

ポーリングとは、主となるシステムが他のシステムに対して一定間隔で順繰りに要求がないか尋ねる方式です。
 Ajaxでチャットを構築しようとすると、他人の発言があったかどうかを短い時間間隔でサーバに問合せなければなりません。ブラウザ側が主システムとなるポーリング になります。
 それに対してCometではサーバに更新がないときには,クライアントからサーバにポーリングする必要はありません。

WebSocket

AjaxやCometは,通信プロトコルにHTTPを用いています。基本的にHTTPは
   コネクション確立の手続きが煩雑である
   一回のリクエスト/レスポンスでコネクションが切れてしまう
などリアルタイムの双方向通信には不適切です。AjaxやCometでは,それを低減する工夫がされていますが限界があります。

WebSocketは、最初一回のコネクション確立にはHTTPを使う以外は、専用のWebSocketプロトコルを使うことにより、高速化・軽量化を図りました。
 WebSocketもWebブラウザとJavascriptで構築できます。HTML5の仕様の一部として策定されましたが、現在は単独のプロトコルとして扱われています。