WebSocketについて: 原理、使用例、C#のコード例、Pub/Subとの違い

June 06, 2023

はじめに

WebSocketは、リアルタイム通信を実現するための技術の一つです。本記事では、その原理と動作について詳しく解説し、具体的な使用例とC#のコード例を交えながら、WebSocketとPub/Subとの違いを明らかにします。

WebSocketの原理と動作

WebSocketは、サーバーとクライアント間で双方向の通信を可能にするプロトコルです。HTTPと異なり、WebSocketは一度接続を確立するとその接続が切断されるまで維持されます。これにより、サーバーからクライアントへのリアルタイムなデータ送信が可能となります。

WebSocketの動作

具体的には、以下のステップでWebSocketの通信が行われます。

  1. クライアントがサーバーに対してHTTP/HTTPSプロトコルでWebSocket接続のリクエストを送信します。このリクエストは「アップグレードリクエスト」と呼ばれ、HTTP接続をWebSocket接続にアップグレードする意志を示しています。
  2. サーバーがこのリクエストを受け入れると、アップグレードレスポンスをクライアントに送り返します。これにより、接続はWebSocketにアップグレードされます。
  3. アップグレードが完了したら、サーバーとクライアント間の双方向通信が始まります。

WebSocketの具体的な使用例

リアルタイムチャットアプリ、マルチプレイヤーゲーム、リアルタイムの株価表示など、リアルタイム性が求められるアプリケーションでWebSocketが活用されています。

C#におけるWebSocketのコード例

C#では、以下のようにしてWebSocketを利用することができます。

ClientWebSocket webSocket = null;

try
{
    webSocket = new ClientWebSocket();
    await webSocket.ConnectAsync(new Uri("ws://example.com/ws"), CancellationToken.None);

    while (webSocket.State == WebSocketState.Open)
    {
        // Message processing code here
    }
}
finally
{
    if (webSocket != null)
        await webSocket.CloseAsync(WebSocketCloseStatus.NormalClosure, string.Empty, CancellationToken.None);
}

WebSocketとPub/Subの違い

WebSocketとPub/Subは、両方ともリアルタイム通信を実現する技術ですが、以下のような違いがあります。

  • 接続の持続性: WebSocketは一度接続を確立すると、その接続は維持されます。一方、Pub/Subでは各メッセージが個別に送信され、特定の接続が持続するわけではありません。
  • データフロー: WebSocketは双方向の通信を可能にしますが、Pub/Subは一方向的な通信が基本です。

まとめ

WebSocketは、リアルタイム通信を可能にするプロトコルであり、サーバーとクライアント間で双方向の通信を可能にします。この記事では、その原理と動作、使用例、C#のコード例を紹介し、WebSocketとPub/Subの違いを説明しました。WebSocketはリアルタイム性が必要なアプリケーションにおいて有用な技術であり、その理解と活用は今後ますます重要になっていくでしょう。


Profile picture

Written by Mittsu
ベンチャー企業のしがないエンジニア。趣味はサッカーとTCG.

© 2024