F5 GLOSSARY

WebSocket

WebSocketとは、インターネットで使用される通信プロトコルの1つです。これを利用することで、Webサーバとクライアントとの間の双方向通信が可能になります。インターネット技術の標準化推進団体であるIETFが「RFC 6455」として定義しています。

Webは元々ハイパー テキストを実現するために登場したものですが、その後はよりダイナミックなWebアプリケーションの実現を目指すようになりました。そのために一般的に採用されているのが、XMLHttpRequestを使用したAJAX(Asynchronous JavaScript and XML)という手法です。AJAXはページ単位ではなく、より細かいデータのやり取りをWebサーバと行うことで、レスポンスの良い操作環境を実現します。しかしデータのやり取りは必ずクライアント側から行う必要があり、Webサーバ側からクライアントにデータをプッシュ配信することは困難でした。

このような問題を解決するため、AJAXをベースにCometが開発されました。これは「意図的にレスポンス保留状態のリクエストを作る」ことでWebサーバのHTTPコネクションを開きっぱなしにしておき、Webサーバ側が情報を配信したいタイミングでこのコネクションを利用してレスポンスを行うというもので、リソース消費量が大きいという問題がありました。

WebSocketは、このCometを改善する形で開発されたプロトコルであり、HTML5で利用可能になっています。WebSocketでは、Webサーバとクライアントの間のコネクションを維持し続け、このコネクションを使用して双方向通信を行います。現在は主要なブラウザが、WebSocketをサポートしています。

WebSocketでのコネクション確立はHTTPを使用して行われますが、この際にHTTPの「Upgradeヘッダ フィールド」を用いることで、WebSocketのコネクションへとアップグレードしています。もしWebサイトがHTTPプロキシを使用しており、これがWebSocketをサポートしていない場合には、正しい接続・通信が行えない可能性があるため、注意が必要です。


< Return to the glossary