細かいやりとりを200回する場面です。1往復が5msなら、まとめる場合との差は96.7倍でした。
0.001msなら1.5倍です。往復を軽くすることは、まとめるのと同じ方向に効きます。
双方向の接続を1本開きます。送るのも受け取るのも、その1本の上で行います。
WebSocketが開くのは、双方向の接続です。出典はWebSocketの面は、利用者のブラウザとサーバーとのあいだで、双方向のやりとりができる通信の場を開くことを可能にすると述べています。
この形の利点も明記されています。この面を使えば、返事のためにサーバーを見に行かなくても、サーバーへ伝言を送り、応答を受け取れるという記述です。
始め方は単純です。出典はWebSocketの取り決めで通信するには、WebSocketという対象を作る必要があると説明しています。
作った時点で接続が始まります。その対象を作ることが、サーバーへの接続を確立する過程を開始するという記述です。
3番目と4番目が分かれ目です。回数が多いほど、開いたままにしておく価値が出ます。
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
効き目は往復の重さで決まります。近ければ、開いたままにする利点は小さくなります。
WebSocketでは、接続を先に確立します。出典はWebSocketの実体を作ることが、サーバーへの接続を確立する過程を開始すると述べています。
確立したあとは、1回ごとの手続きがなくなります。どれだけ効くかを数えました。
200回のやりとりを、1回ずつ往復する場合とまとめる場合で比べます。1往復の時間だけを変えました。
一覧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回あたりを軽くします。
接続の確立や、毎回付く見出しの分がなくなります。結果として、この表の左の列が下へ動きます。
だから両方を同時に使えます。まとめられるものはまとめ、残りを軽い往復で送る形になります。
往復が軽くなるほど、細かいやりとりの代償が消える。
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を使えば、見に行く必要がなくなります。出典はこの面を使えば、返事のためにサーバーを見に行かなくても、伝言を送り応答を受け取れると述べています。
見に行く形の負担がどれだけかを、先に数えておきます。
上流のファイルが届くのを待つ。届く時刻は 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万本の接続が残ります。
4番目の場合、双方向は要りません。片方向の仕組みはServer-Sent Eventsの記事で扱いました。
選ぶ順序としては、まず片方向で足りるかを確かめ、足りなければ双方向にすることになります。
1往復の時間は式で置いた値です。0.001msは同じ処理の中の呼び出しを、5msは遠くにある相手を想定したもので、実際の値は環境で変わります。往復が軽くなることをこの計測では直接測っておらず、表の左の列が下へ動くという位置づけだけを示しています。接続を保つ側の負荷も含めていません。ここで見せているのは、細かいやりとりの代償が往復の重さでほぼ決まるという関係です。
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
同じ課題を持つ会社にとって、動いている設定は「作る時間」を買えるということです。ServiceDockは自作のワークフローやテンプレートを出品できるマーケットプレイスです。手数料や出品の流れは出品者向けページにまとまっています。
出品の仕組みを見る