なぜ「リアルタイム」に画面が変わるのか
チャットの新着や配送状況など、操作していないのに画面が最新へ変わることがあります。基本の通信は、ブラウザが「ください」と頼んで初めてサーバーが答える片方向です。サーバー側で起きた変化は、どうやって届くのでしょうか。
ポーリング vs WebSocket を時系列で見比べる
各ステップ・参加者・分岐をクリックすると、その仕組みの説明がここに表示されます。
この図をテキストで読む
シーケンス図「リアルタイム通信(ポーリング vs WebSocket)」。参加者2人、ステップ9個。 【参加者】(左から右) - ブラウザ: あなたの画面 - サーバー: 情報を持つ側 【流れ】(上から下へ) ── ① ポーリング方式:何度も「更新ある?」と聞きに行く ── (数秒ごとに繰り返し(例: 5秒おき) の枠) 1. ブラウザ → サーバー: 更新ありますか? 2. サーバー → ブラウザ: ありません(応答) 3. ブラウザ → サーバー: 更新ありますか?(数秒後にまた) 4. サーバー → ブラウザ: これが新着です(応答) ── ② WebSocket方式:一度つないだら開けっぱなし ── 5. ブラウザ → サーバー: 接続を申し込む(最初の1回だけ) 6. サーバー → ブラウザ: 接続OK(双方向の通り道が開通)(応答) (以後はサーバーが新着のたびに自発的にプッシュ の枠) 7. サーバー → ブラウザ: 新着が出た瞬間にプッシュ 8. サーバー → ブラウザ: 次の新着もそのまま届く 9. ブラウザ → サーバー: ブラウザからもいつでも送れる
「リアルタイムっぽい」には種類がある
画面が勝手に更新されても、中身がポーリングなら実は数秒ごとの問い合わせかもしれません。即時性がどれだけ必要かで、ポーリングで十分かWebSocketが要るかが決まります。まず必要な速さを見極めるのがコツです。
押さえておきたい用語
- ポーリング
- WebSocket
- プッシュ(サーバープッシュ)
- ブロードキャスト
- 双方向通信