わかりやすくするためざっくりとした概念を記載しています。
一部、一部正確性を欠く可能性があります。
WebSocketとは
WebSocketは、クライアント(例: ブラウザ)とサーバーの間で、双方向かつリアルタイムにデータをやり取りできる通信技術です。
通常のHTTP通信では、クライアントからリクエストを送信して初めてサーバーが応答を返します。しかし、WebSocketでは最初に一度だけ接続を確立すると、その後はクライアントとサーバーの間で自由にメッセージを送り合うことができます。
WebSocketの仕組み
ハンドシェイク
最初にクライアントがサーバーに「WebSocket接続を開始したい」というリクエストを送ります。サーバーがこれを承認すると、接続が確立されます。
データの双方向通信
接続が確立されると、クライアントとサーバーは互いに自由にデータを送受信できます。これにより、リアルタイム性が求められるアプリケーションで高いパフォーマンスを発揮します。
HTTPとWebSocketの違い
HTTP通信の仕組み
HTTP通信では、クライアントが必要なときにリクエストを送信し、その都度サーバーからデータを受け取ります。この方式はシンプルで、通常のウェブサイトに適しています。しかし、以下の制約があります。
毎回リクエストを送らないと情報が取得できない。
リアルタイム性が低い。
例
ブラウザでページを更新するたびに最新データが取得される。
チャットアプリの場合、何度もリクエストを送らないと新しいメッセージが表示されない。
WebSocket通信の仕組み
WebSocketでは、最初に接続を確立すれば、その後はクライアントとサーバーが自由にデータを送り合えます。これにより、リアルタイムなデータ更新が求められるシステムで高い効率を実現します。
例
サーバーが新しいデータを検知すると、自動でクライアントに通知を送る。
チャットアプリで新しいメッセージが即座に反映される。
特徴 | HTTP通信 | WebSocket通信 |
---|---|---|
通信方向 | クライアント → サーバーのみ | クライアント ↔ サーバー(双方向) |
データ送受信の仕組み | リクエスト・レスポンスのセット | 接続後、自由にデータ送信可能 |
リアルタイム性 | 低い | 高い |
接続の効率 | リクエストごとに接続を作る | 最初の接続を維持し続ける |
WebSocket通信の全体像
まとめ
WebSocketを活用することで、チャットアプリやリアルタイム通知のような高パフォーマンスが求められるアプリケーションの効率が飛躍的に向上します。