WebSocket
概要
WebSocketとは、WebサーバとWebブラウザの間で双方向通信できるようにする技術仕様。サーバ側から任意のタイミングで送信を開始でき、プッシュ型の情報配信アプリケーションを手軽に実装できる。Webコンテンツの伝送に用いられるHTTPは通常、クライアント(ブラウザなど)からの要求(リクエスト)にサーバが応答(レスポンス)を返すという形でしか通信できないが、WebSocketでは一旦接続を確立した後はクライアント側からもサーバ側からも能動的にメッセージを送信することができる。
通信に使用するTCPポートやプロトコル(通信規約)、メッセージの形式などはHTTPの仕様を踏襲し、HTTPで確立したコネクションをWebSocketに切り替え(アップグレード)ることでWebSocket用の通信路を確保する。「http:」「https:」に代わるURIスキームとして「ws:」および「wss:」が用意されており、「ws://IPアドレスやドメイン名:ポート/APIのパス」という記法で接続先を指定する。
これまで、Webページの受信完了後に任意のタイミングで通信する方式として「Ajax」(XMLHttpRequest)が、サーバ側からの擬似的なプッシュ通信を行う方式として「Comet」(ロングポーリング)が用いられてきたが、双方向かつリアルタイムなシステムの構築にはいずれも不十分であった。
WebSocketを利用することで、独自のプロトコルやネイティブクライアントでしか実現が難しかった効率的な双方向通信環境をWebアプリケーション上でシンプルに実装することができるようになる。
プロトコル仕様は2011年にIETFによってRFC 6455として、API仕様は2012年にW3Cによって「The WebSocket API」として標準化された。API仕様はWHATWGによる「HTML Standard」の一部に移行した後、2021年に改めて「WebSockets Standard」として発行された。現在は主要なWebブラウザ製品の大半が標準でWebSocket仕様に対応している。