👌

WebsocketsとWebRTC

2023/05/23に公開

Web Socketsとは

HTTP

HTTPでは、クライアント側がサーバー側にリクエストを送り、サーバーがそれに対してレスポンスを返すという枠組みで通信を行うStateless Protocolです。そのため、サーバー側がなにかクライアントにメッセージを送信したい場合には、定期的にクライアントがサーバーにリクエストを送信し、新しいメッセージがないか逐一問い合わせる必要がありました。つまり、HTTPでは、サーバーは基本的には受け身でした。また、もう一つの問題点として、HTTPでは、クライアントがサーバーからレスポンスをもらった時点で、コネクションは終了されます。

もう少し詳しく説明すると、TCPを利用したHTTPでは、Three way handshakeにより、コネクションがサーバーとクライアント間で確立され、レスポンスを受け取るとTCP Connectionはclosedされます。別々のRequestは、別々のTCP Connectionを持つことになります。

HTTP Headerは大凡1KBであるため、HTTP Requestが増えれば増えるほど、サーバーの負担も増加することになります。

Web Sockets

Web Socketsでは、そうした問題を解決するための、開発されました。Web Socketsは、双方向通信の規格で、Stateful Protocolです。Stateful Protocolとは2者間のConnectionが持続し、どちらか一方によって閉じられるまでConnectionは継続されます。

まず、Connectionが初期化されると、2者はHandshakingを行います。その後通信が確立され、handshakeを行った2者は、同じチャンネルで通信を双方向に行います。

どちらかがダウンしたり、閉じることを決定するまでConnectionは持続します。

Web Socketsはさまざまな用途で利用されます。

  • 株価などのReal-time web applicationでは、サーバーが常にクライアント側にデータを送信し、リアルタイムの情報を提供します。
  • Gameでは、ページが更新されることなく常に新しい情報を得ることができます。

古いデータを取得する場合や、やり取りが一度で良い場合はWeb SocketsよりHTTP通信の方が適しています。

Web RTC

執筆中...

Discussion