ついにRFCに登場!Webサーバとの双方向通信を実現する「WebSocket」
杉山貴章(オングス)
2012-01-06 09:00:00
次世代のWebアプリケーションの中核を担う技術と期待されている「WebSocket」。AjaxやCometとは何が違うのか、どういった背景のもと登場した技術なのか。
WebSocketにアクセスするための「The WebSocket API」
ウェブページのプログラムからWebSocketの機能にアクセスするにはW3Cによって標準化が進められている「The WebSocket API」を利用する。現在はCandidate Recommendation(勧告候補)の段階にある。
WebSocket APIの核になるのがWebSocketインターフェースである。アプリケーションでは任意のURLを指定してWebSocketオブジェクトを作成し、サーバとのハンドシェイクやデータの送受信などを行うことができる。
例えば、次のコードはWebSocket APIを使って「ws://example.com:9876/」に50msに1回データを送信する例である。
WebSocket APIの使用例 (出典:The WebSocket API)
var socket = new WebSocket('ws://example.com:9876/");
socket.onopen = function () {
setInterval(function() {
if (socket.bufferedAmount == 0)
socket.send(getUpdateData());
}, 50);
};
WebSocketオブジェクトのreadyState属性はコネクションの状態を表す。データの送信はsend()メソッドで行うが、実際に送信されるまでの間は待ち行列に追加される。bufferedAmountはこの待ち行列に入っているデータのバイト数を表す。つまり、この値が0のときは送信が完了しているということになる。
WebSocketプロトコルとWebSocket APIは、ともにまだ策定途中の段階だが、少しずつ完成に近づいてきている。これがウェブサーバやブラウザの実装として正式に採用されれば、Cometのような回り道をすることなく、本当の意味での双方向通信を実現できる。Webアプリケーションの開発者にとっては必須の技術になるはずだ。
キーワード解説一覧
- 主要NoSQLの種類と特性を整理--分散DBMS「Cassandra」も解説
- Facebookが公開したPHP仮想マシン「HipHop VM」とは
- jQuery Mobileがモバイルサイト開発でスタンダードの地位を築けた理由
- モバイル向けFlash終了でHTML5大勝利!と安心していられない理由
- 統計解析のための専用言語R(R言語)とは
- Eclipseプロジェクトによって開発された新言語「Eclipse Xtend」
- HTML5をサポートした次期Kindleフォーマット「Kindle Format 8」の狙い
- Googleが発表した「Dart」って何?
Keep up with ZDNet Japan
ZDNet JapanはFacebookページ、Twitter、RSS、Newsletter(メールマガジン)でも情報を配信しています。
- コメント(2件)
#1
m11m
2012-01-06 20:23:50
#2
builder編集部
2012-01-06 21:50:42
m11m 様
builder編集部です。ご指摘、ありがとうございました。
「ポーリング」についてですが、ご指摘の通り誤りでしたので、下記の通り修正いたしました。
修正前:
Cometは、サーバ側でリクエストに対する保留状態を作っておき(これをポーリングと呼ぶ)、任意のタイミングでレスポンスを返すという方法によってプッシュ配信を実現する。
修正後:
サーバ側でリクエストに対する保留状態を作っておき、任意のタイミングでレスポンスを返すという方法によってプッシュ配信を実現する(この方式を「ロングポーリング」と呼ぶ)。
この度はご迷惑をおかけしまして、誠に申し訳ございませんでした。
今後もご愛読頂ければ幸いです。よろしくお願いいたします。
builder編集部です。ご指摘、ありがとうございました。
「ポーリング」についてですが、ご指摘の通り誤りでしたので、下記の通り修正いたしました。
修正前:
Cometは、サーバ側でリクエストに対する保留状態を作っておき(これをポーリングと呼ぶ)、任意のタイミングでレスポンスを返すという方法によってプッシュ配信を実現する。
修正後:
サーバ側でリクエストに対する保留状態を作っておき、任意のタイミングでレスポンスを返すという方法によってプッシュ配信を実現する(この方式を「ロングポーリング」と呼ぶ)。
この度はご迷惑をおかけしまして、誠に申し訳ございませんでした。
今後もご愛読頂ければ幸いです。よろしくお願いいたします。
- ホワイトペーパー




呼びません。