アプリ/フロント基盤

WebSocketとは|往復が5msなら細かいやりとりは96.7倍、0.001msなら1.5倍しか変わらない

何ができる仕組みなのか往復の重さはどこまで効くのか接続を開き続ける代償は何か

細かいやりとりを200回する場面です。1往復が5msなら、まとめる場合との差は96.7倍でした。

0.001msなら1.5倍です。往復を軽くすることは、まとめるのと同じ方向に効きます。

この記事の要点

  • 5msで96.7倍
  • 0.8msで80.6倍
  • 0.01msで5.7倍
  • 0.001msで1.5倍

返事のために見に行かなくてよくなる

双方向の接続を1本開きます。送るのも受け取るのも、その1本の上で行います。

WebSocketが開くのは、双方向の接続です。出典はWebSocketの面は、利用者のブラウザとサーバーとのあいだで、双方向のやりとりができる通信の場を開くことを可能にすると述べています。

この形の利点も明記されています。この面を使えば、返事のためにサーバーを見に行かなくても、サーバーへ伝言を送り、応答を受け取れるという記述です。

接続の作り方

始め方は単純です。出典はWebSocketの取り決めで通信するには、WebSocketという対象を作る必要があると説明しています。

作った時点で接続が始まります。その対象を作ることが、サーバーへの接続を確立する過程を開始するという記述です。

2つの方向で効き方が違う

  1. サーバーから受け取る。見に行かなくて済む
  2. サーバーへ送る。接続を作り直さずに済む
  3. 細かいやりとり。両方が効く
  4. 1回だけのやりとり。効かない。接続を開く手間が余る

3番目と4番目が分かれ目です。回数が多いほど、開いたままにしておく価値が出ます

出典MDN Web Docs「The WebSocket API (WebSockets)」2026-08-18 確認
The WebSocket API makes it possible to open a two-way interactive communication session between the user's browser and a server.
原文MDN Web Docs「The WebSocket API (WebSockets)」 この内容の有効期限2027-02-18

往復が5msなら96.7倍、0.001msなら1.5倍しか変わらない

効き目は往復の重さで決まります。近ければ、開いたままにする利点は小さくなります。

WebSocketでは、接続を先に確立します。出典はWebSocketの実体を作ることが、サーバーへの接続を確立する過程を開始すると述べています。

確立したあとは、1回ごとの手続きがなくなります。どれだけ効くかを数えました。

1往復の重さを変える

200回のやりとりを、1回ずつ往復する場合とまとめる場合で比べます。1往復の時間だけを変えました。

text
一覧200件で固定し、1往復にかかる時間のほうを変える

1往復      1件ずつ(時間)  まとめて(時間)  比
0.001ms              0.60ms            0.40ms    1.5倍
0.01ms               2.41ms            0.42ms    5.7倍
0.1ms               20.50ms            0.60ms   34.2倍
0.8ms              161.20ms            2.00ms   80.6倍
5ms               1005.40ms           10.40ms   96.7倍

5msなら96.7倍、0.001msなら1.5倍です。同じやりとりでも結論が変わります。

つまりWebSocketが効くのは、1往復が重い環境です。携帯の回線や、遠くにある相手が該当します。

何を減らしているか

この表の「まとめて」は、往復の回数を2回に減らした場合です。WebSocketは回数を減らすのではなく、1回あたりを軽くします

接続の確立や、毎回付く見出しの分がなくなります。結果として、この表の左の列が下へ動きます

だから両方を同時に使えます。まとめられるものはまとめ、残りを軽い往復で送る形になります。

往復が軽くなるほど、細かいやりとりの代償が消える。

1回ずつ送った場合の比(倍)1往復にかかる時間(ms)→1065.50.001ms0.01ms0.1ms0.8ms5ms200回のやりとりで固定した計算。左下に寄るほど、1回ずつ送る書き方の代償が小さい。
図1 ── 1往復の重さと、細かいやりとりの代償
出典MDN Web Docs「Writing WebSocket client applications」2026-08-18 確認
Creating a WebSocket instance starts the process of establishing a connection to the server.
原文MDN Web Docs「Writing WebSocket client applications」 この内容の有効期限2027-02-18

見に行かない代わりに、接続が残り続ける

負荷の形が変わります。回数の負荷が、同時に開いている数の負荷へ移ります。

WebSocketを使えば、見に行く必要がなくなります。出典はこの面を使えば、返事のためにサーバーを見に行かなくても、伝言を送り応答を受け取れると述べています。

見に行く形の負担がどれだけかを、先に数えておきます。

見に行く形の負担

text
上流のファイルが届くのを待つ。届く時刻は 180分の幅でばらつく
決めた間隔で見に行く。届いていれば次へ進む

見に行く間隔  気づくまでの遅れ(平均)  99%点  見に行った回数(平均)
1分ごと                            0.5分     1.0分                   81.1回
5分ごと                            2.5分     5.0分                   16.6回
15分ごと                           7.4分    14.8分                    5.9回
30分ごと                          15.2分    29.7分                    3.2回
60分ごと                          31.5分    59.4分                    1.9回

15分ごとに見に行けば、1人あたり5.9回で遅れは7.4分です。

1万人が同じことをすれば5万9千回になります。これが消える代わりに、1万本の接続が残ります。

どちらが軽いか

  1. 利用者が多く、更新が少ない。接続の数が重い
  2. 利用者が少なく、更新が多い。見に行く回数が重い
  3. 遅れを許せない。接続を開くほうを選ぶ
  4. 片方向でよい。押し出すだけの仕組みで足りる

4番目の場合、双方向は要りません。片方向の仕組みはServer-Sent Eventsの記事で扱いました。

選ぶ順序としては、まず片方向で足りるかを確かめ、足りなければ双方向にすることになります。

余談 この計測での注意

1往復の時間は式で置いた値です。0.001msは同じ処理の中の呼び出しを、5msは遠くにある相手を想定したもので、実際の値は環境で変わります。往復が軽くなることをこの計測では直接測っておらず、表の左の列が下へ動くという位置づけだけを示しています。接続を保つ側の負荷も含めていません。ここで見せているのは、細かいやりとりの代償が往復の重さでほぼ決まるという関係です。

出典MDN Web Docs「The WebSocket API (WebSockets)」2026-08-18 確認
With this API, you can send messages to a server and receive responses without having to poll the server for a reply.
原文MDN Web Docs「The WebSocket API (WebSockets)」 この内容の有効期限2027-02-18

よくある質問

WebSocketは何ができますか
双方向のやりとりです。返事のためにサーバーを見に行かずに、送ることも受け取ることもできます。
往復の重さはどこまで効きますか
200回のやりとりで、1往復5msなら96.7倍、0.001msなら1.5倍でした。
見に行く形と何が違いますか
遅れが間隔に縛られません。見に行く形では、15分ごとなら平均7.4分の遅れになります。
代償は何ですか
接続を開き続けることです。受け取る側の数だけ、同時に開いた接続が残ります。

まとめ

  • 双方向にやりとりできる
  • 返事のために見に行かない
  • 効くのは往復が重い場合
  • 代償は開き続ける接続

今日から始められること

  1. 1画面あたりのやりとりの回数を数える
  2. 1往復にかかる時間を測る
  3. その2つを掛けて見積もる
  4. 同時に開く接続の数を見積もる

実務で組んだWebSocketのワークフローには、値段が付きます

同じ課題を持つ会社にとって、動いている設定は「作る時間」を買えるということです。ServiceDockは自作のワークフローやテンプレートを出品できるマーケットプレイスです。手数料や出品の流れは出品者向けページにまとまっています。

出品の仕組みを見る