HTML5+WebSocketsで作るリアルタイムWeb

2011年3月29日(火)
高尾 哲朗(監修:山田祥寛)

はじめに

HTML5+WebSocketsは、Ajax+CometやWCF+Silverlightと異なる特徴としてコネクションが1つという特徴を持ちます。これは、コネクションを張りっ放しにするコストより、コネクション開始のリクエスト発行時にコストを多く必要とすることから考えられた方法です。また、標準のHTML5を使うこと、Webサーバーを特定しないことは重要な要件と考えられます。

WebSocketsは、HTML5での仕様策定から独立した経緯があり、標準に近い仕様と考えることができるため、いずれ多くのWebサーバーでサポートされることが予想されます。サポートとは、WebSocketsの独自プロトコルによって、コネクションを長時間維持することができ、1つのコネクションで、サーバー、クライアント双方からメッセージを送信できることです。

また、コネクションの維持やサーバー、クライアント双方からのメッセージ開始はプロトコルによってサポートされるため、サーバー側のロジックもシンプルです。これは、WebSocketsアプリケーションの移植性が高いことを意味し、またWebサーバーにとっては、WebSocketsに対応しやすいことを意味します。

汎用的という点に注目すると、Ajax+Cometの解説のほとんどが特定のサーバーに依存した解説であることからもわかるように、Ajax+Cometでの双方向通信を行う仕組みは特定のサーバーに依存しています。そのため、サーバー側のシステムの多くは移植不可能で、WCF+Silverlightでの双方向通信の実装の方が、Ajax+Cometでの実装に比べ汎用的と言えます。

その中で、標準のHTML5や標準に近いWebSocketsを選択することは、現在はChrome、Safari等ブラウザを特定しますが、双方向通信に対して最も汎用的なアプローチと考えられます。

システムの構成

HTML5+WebSocketsでは、wsプロトコルをサポートするWebサーバーが重要な役割を果たします。今回は、Ajax+Cometでの環境をそのまま使います。

サンプル一式は、会員限定特典としてダウンロードできます。記事末尾をご確認ください。

  • 「HTML5+WebSocketsで作るリアルタイムWeb」サンプルプログラム

著者
高尾 哲朗(監修:山田祥寛)
WINGSプロジェクト

有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表:山田祥寛)。おもな活動は、Web開発分野の書籍/雑誌/Web記事の執筆。ほかに海外記事の翻訳、講演なども幅広く手がける。2011年3月時点での登録メンバは36名で、現在もプロジェクトメンバーを募集中。執筆に興味のある方は、どしどしご応募頂きたい。著書多数。
http://www.wings.msn.to/

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています