Web技術の基礎

チャットのアプリで、新しいメッセージをサーバからブラウザへすぐに届けたい。WebSocketの説明として正しいものはどれか。

  1. Aブラウザが数秒ごとにHTTPのリクエストを送り、新しいメッセージが届いていないかを、そのたびにサーバに確かめる方式である
  2. BHTTPで始めた接続を切り替えて(アップグレード)、1つの接続の上でサーバとブラウザのどちらからでもメッセージを送れるようにする
  3. Cイベントが起きたときに、サーバから別のサーバの、あらかじめ登録されたURLへ、HTTPのPOSTのリクエストで知らせる方式である
答えと解説を見る

正解:B. HTTPで始めた接続を切り替えて(アップグレード)、1つの接続の上でサーバとブラウザのどちらからでもメッセージを送れるようにする

WebSocketは、HTTPのリクエストで Upgrade: websocket を求め、サーバが 101 Switching Protocols を返すと、同じTCP接続をWebSocketの通信に切り替えます。その後は接続を開いたままにして、サーバとブラウザのどちらからでも、小さなメッセージを少ない手間で送れます。一定の間隔で問い合わせる方式では、新着がなくてもリクエストが発生し、新着が届くまでに最大で問い合わせの間隔だけ遅れます。サーバからサーバへHTTPのPOSTで知らせる方式は、Webhookと呼ばれます。

  • A. これは定期的に問い合わせる方式(ポーリング)です。新着がなくてもリクエストが発生し、間隔の分だけ遅れが出ます。
  • B. 正しい。接続を開いたまま、双方向にいつでもメッセージを送れます。
  • C. これはWebhookの説明です。サーバどうしの通知に使われます。
この分野を解く 分野ページへ

Web技術の基礎の参考書を探す PR

Amazonの検索結果へのリンクです。Amazonのアソシエイトとして、半導体教室は適格販売により収入を得ています。

Web技術の基礎のほかの問題

  1. オンライン決済のサービスで支払いが完了したことを、加盟店のサーバがすぐに知りたい。決済サービスが、あらかじめ登録された加盟店のURLへHTTPのPOSTで通知を送る方式(Webhook)の説明として、正しいものはどれか。
  2. ブラウザで使われるDOM(Document Object Model)の説明として、正しいものはどれか。
  3. 上のCSSを指定した要素の、左右のボーダーの外側の端から端までの幅はどれか。
  4. ほかにスタイルの指定はないものとする。上のHTMLで、「Hello」の文字の色はどれか。
  5. ブラウザが最初の画面を表示するまでの処理(クリティカルレンダリングパス)では、<head>の中に属性なしで書いた <script src="app.js"> があると、HTMLの解析がそこで止まる。この要素にdefer属性を付けたときの動作として、正しいものはどれか。