Microsoftは3月14日(現地時間)、HTTPリクエスト/レスポンスとして伝統的な方式とWebSocket、どちらが優れているかを比較する記事を公式ブログで公開した。必ずしも白黒ハッキリとした結果を導き出すものではないと前置きしながらも、結論として伝統的なHTTPを既定で使用し、場面に応じてWebSocketを使用することを推奨している。

w3.org(W3C)が作成したアイコンを用いたイメージイラスト(公式ブログより抜粋)

伝統的なHTTPはコネクションを長時間占有するため、他のアプリケーションに影響をおよぼす可能性が発生する。他方でWebSocketはソケット接続を確立すれば、他のコネクションを張る必要がないため他への影響は少ない。当初はHTML5の仕様として策定が進められていたが、現在は単独のプロトコルとして存在する。

MicrosoftプログラムマネージャーのJeff Carnahan氏の説明は、両者を比較してそれぞれのメリットを次のように説明した。

伝統的なHTTPが向いているシナリオ

  • 継続的な更新を必要としないコンテンツ
  • キャッシュが有効なコンテンツ
  • 冪等性(べきとうせい)と安全性を必要とするコンテンツ
  • 適切なエラーメッセージを必要とする場面
  • 同期イベントを要求する場面

WebSocketが向いているシナリオ

  • 高速な応答性を必要とするコンテンツ
  • 継続的な更新を必要とするコンテンツ
  • アドホックモードを用いる場面
  • 低ペイロードメッセージを必要とする場面

さらにサービスのポーリングを必要とする場合や頻繁に小さなメッセージを送信するクライアント、リソースへの迅速な対応が必要になる場面で伝統的なHTTPの使用は適切ではなくWebSocketを実装すべきと説明している。その上でドキュメント(WebSocket用およびHTTP用)やサンプルコード(WebSocket用およびHTTP用)の参照を推奨した。

伝統的なHTTPとWebSocketの特徴(公式ブログより抜粋)

阿久津良和(Cactus)