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