こんにちは、
InfraAcademyというインフラ学習サイトを運営しています、ryuと申します。
今回の記事では、WebSocket(ウェブソケット)とは何なのかについて、分かりやすく解説します。簡単に言うと、Webサーバーとクライアンの双方向の通信を可能にするためのプロトコルです。どのような場面で使われているのか、どのような仕組みなのかについて詳しく解説します。
目次
WebSocketとは双方向の通信を可能にするためのプロトコル
WebSocketとは、双方向の通信を可能にするためのプロトコルです。
WebSocketを使用すると、クライアント(通常はウェブブラウザ)とサーバーが持続的な接続を確立し、リアルタイムでデータの送受信を行うことができます。
WebSocketのイメージ図
WebSocketのイメージはこちらになります。
HTTPとは異なり、WebSocketはクライアントとサーバーの間で双方向の通信を可能にします。これにより、サーバーはクライアントからのリクエストを待つことなくデータを送信できます。
通常の通信との違い
通常、クライアントからWebサーバーはアクセスする際は、HTTP通信をおこないます。URLに「http://www.test.com」と入力すると、Webサイトが表示されます。
これは、クライアントから、Webサーバーに対してリクエスト(要求)を投げて、レスポンスとしてWebサイトの情報を受け取っています。
HTTPはクライアントがリクエストを送信し、サーバーがそれに応答するという単方向の通信モデルです。クライアントが新しいデータを取得するには、再度リクエストを送信する必要があります
WebSocketはリクエストなしにサーバーがデータを送信できる
通常のHTTP通信と違い、サーバーはクライアントからのリクエストを待つことなく、必要に応じてデータをプッシュ送信できます。
では、WebSocketはどのような場面で使われるのでしょうか?具体的な実例がわかるとWebSocketのイメージが湧くと思います。
WebSocketはどのような場面で使われるのか?
WebSocketはリアルタイム通信が必要とされるさまざまなアプリケーションで実装されています。
たとえば、以下のようなアプリです。
- チャットアプリ
- オンラインゲーム
- コラボレーションツール
それぞれについて詳しく解説します。
チャットアプリ
チャットアプリは、SlackやDiscord、LINEなどお互いでメッセージをやり取りするアプリのことです。
チャットアプリでは、ユーザー同士のメッセージをリアルタイムで送受信する必要があります。WebSocketは低遅延で双方向通信が可能なため、即時性が求められるチャットに使われます。
オンラインゲーム
オンラインゲームは、FortniteやPUBGなど、オンライン上で遊べるゲームです。
オンラインゲームでは、プレイヤーのアクションやゲームの状態をリアルタイムで同期させる必要があります。
WebSocketを使用することで、プレイヤー間の情報を迅速に共有し、スムーズなゲームプレイを実現します。
コラボレーションツール
コラボレーションツールとは、Google Sheets, Microsoft Office Onlineなどのツールです。
ドキュメントやスプレッドシートの共同編集では、ユーザーが行った変更を即座に他のユーザーに反映させる必要があります。WebSocketはこれをリアルタイムで実現します。
このように、様々なアプリでWebSocketが使われています。
WebSocketのメリット
ここまで、WebSocketの概要や具体的な事例を解説しました。
WebSocketを使うとどのようなメリットがあるのかをさらに詳しく解説します。
WebSocketのメリット1:持続的接続
WebSocketのメリットの1つ目は「持続的接続」です。
一度接続が確立されると、WebSocketはその接続を維持し続けます。これにより、クライアントとサーバーの間で持続的な通信が可能になります。
接続が持続されるため、各リクエストごとに新たな接続を確立する必要がなく、遅延が減少します。
WebSocketのメリット2:低オーバーヘッド
WebSocketのメリットの2つ目は、「低オーバーヘッド」です。
「低オーバーヘッド」とは、通信プロトコルやシステムが動作する際に発生する追加の処理やデータ量が少ないことを指します。
WebSocketでは、一度接続が確立された後、データ送信に必要なプロトコルヘッダーのサイズが非常に小さいです。これに対して、HTTPでは各リクエストごとに比較的大きなヘッダーが含まれます。
例えば、HTTPリクエストには、URL、メソッド(GET, POSTなど)、ヘッダー情報(クッキー、ユーザーエージェント、認証情報など)が含まれ、これが毎回送信されます。
それに対して、WebSocketの場合、最初のハンドシェイク後は、ヘッダー情報が最小限で済み、データフレームのみが送受信されます。
まとめ
今回の記事では、WebSocketについて解説しました。
WebSocketは、チャットなどを実装する上で必要な技術です。Webエンジニアであれば知っておきたい技術の1つです。
WebSocketの概要、メリット、HTTPとの違いを知っておくことで、さまざまな場面で役立つと思います。
当ブログでは、このようなITに関する知識を発信しているので興味のある方は引き続きごらんください。
ここまでお読みいただきありがとうございました!