メインコンテンツへ
ネットワークネットワーク実践

WebSocketに関する記述として、最も適切なものはどれか。

ア.HTTPのハンドシェイクでコネクションを確立した後、サーバーとクライアント間で双方向のリアルタイム通信を全二重で継続できるプロトコル。正解
イ.クライアントが定期的にサーバーへHTTPリクエストを送り、新しいデータがあれば受け取るポーリング方式の拡張仕様。
ウ.Webブラウザ間でP2P通信を行うためのプロトコルで、ビデオ通話や画面共有に特化している。
エ.HTTPSを前提とし、サーバーからクライアントへの一方向ストリーミングのみをサポートするプロトコル。

解説

WebSocketは「電話回線を繋ぎっぱなし」にするプロトコル。HTTPが「手紙を送るたびに封筒を開け直す」のと違い、一度繋いだら会話が終わるまで繋ぎっぱなし。チャットやゲームに最適です。

なぜ ア が正解か

アが正解。WebSocketはHTTPのUpgradeヘッダーを使ってコネクションを確立(ハンドシェイク)した後、TCPコネクションをそのまま使って双方向・全二重通信を継続するプロトコル(RFC 6455)。サーバーからクライアントへのプッシュが可能で、チャットアプリ・リアルタイム通知・オンラインゲームなどに活用される。

なぜ イ は間違いか

定期的にHTTPリクエストを送ってデータを取得するのはポーリング(polling)の説明。WebSocketはリクエスト・レスポンスモデルを使わず、確立した1つの接続で常時双方向通信を行う。ポーリングと比べてオーバーヘッドが大幅に少ない。

なぜ ウ は間違いか

ブラウザ間のP2P通信でビデオ通話などを実現するのはWebRTC(Web Real-Time Communication)。WebSocketはサーバーとの双方向通信を提供するプロトコルであり、P2P通信は行わない。

なぜ エ は間違いか

サーバーからクライアントへの一方向ストリーミングはSSE(Server-Sent Events)の説明。WebSocketは「双方向」通信が最大の特徴であり、一方向ではない。

出典: AI生成問題(学習用)