IRONSOFTWAREHOME
開発者向けアップデート

Socket io .NET(開発者向けの仕組み)

Jacob Mellor、Ironチームの最高技術責任者(CTO)
Jacob Mellor
Updated: 2026年5月8日

Socket.IO サーバーは、リアルタイムの双方向およびイベント駆動通信を促進する堅牢なライブラリとして位置づけられています。 これは、チャットアプリケーション、ライブアップデート、コラボレーションプラットフォームなどのタスクにおいてWebアプリケーションで広く使用されています。 Socket.IOは通常JavaScriptと関連付けられていますが、C#を使用してクライアント側で効果的に使用することもできます。 クライアントは時折、Webブラウザである可能性があります。 この記事では、C#環境でSocket.IOクライアントを設定および使用する方法を探ります。 基本的な例をいくつか紹介し、その利点と可能な使用ケースを結論として述べます。

Socket.IO 接続を確立する方法

Socket.IO 接続は、さまざまな低レベルのトランスポートを使用して確立できます。

  • HTTP ロングポーリング

  • Webソケット

    • Webトランスポート

Socket io .NET (開発者向けの使い方): 図1 - クライアント-サーバー通信アプリケーション

Visual Studio 2022でコンソールプロジェクトを作成する

Visual Studioを開き、スタートウィンドウで新しいプロジェクトを作成を選択します。

Visual Studio 2022でコンソールアプリケーションを作成するには、Visual Studioを起動し、スタートウィンドウから"新しいプロジェクトを作成"を選択します。 "コンソールアプリ"テンプレートを選択し、プロジェクトの名前と場所を設定し、.NET 6.0が選択されていることを確認します。

Socket.IOとは何ですか?

Socket.IOは、ウェブクライアントとサーバーがリアルタイムで通信する力を持つJavaScriptライブラリです。 それは2つの部分で構成されています:

Socket IOの部品

  • クライアントサイドライブラリ: ブラウザで実行されます。
  • サーバーサイドライブラリ: Node.jsで実行されます。

必要なパッケージをインストールする

Visual Studioで .NETアプリケーションにSocket.IOを使用するには、互換性のあるサーバー実装が必要です。 そのような実装の一つが.NET用のSocketIoClientDotNetであり、C#アプリケーションからSocket.IOクライアントがSocket.IOに接続できるようにします。

まず、必要なNuGetパッケージをインストールしてください。 これをPackage Manager Consoleを経由して行うか、プロジェクトファイルにリファレンスを追加することで行うことができます:

PM > Install-Package SocketIoClientDotNet

SocketIoClientDotNetパッケージのスクリーンショット

Socket io .NET (How It Works For Developers): Figure 3 - Install Socket.IO for NET using the Manage NuGet Package for Solution by searching "SocketIoClientDotNet" package name in the search bar of NuGet Package Manager, then select the project and click on the Install button.

このコマンドを実行すると、Socket.IOクライアントライブラリがあなた for .NETプロジェクトに組み込まれ、C#アプリケーションがユーザーとシステム間の通信を促進しながらSocket.IOサーバーに接続できるようになります。

Socket.IO の作成

C#クライアントに取り掛かる前に、Visual Studioで.NET Coreコンソールアプリを使用した基本的なSocket IOの例を設定しましょう。 これにより、クライアント実装をテストできます。

サーバー実装の作成

以下のコードは、クライアント接続をポート 3000 でリッスンする基本的な Socket.IO サーバーを C# で設定します。クライアントからメッセージが送信されると、サーバーはメッセージをログに記録し、受信を確認するためにクライアントに応答します。

using System;
using System.Net.WebSockets;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using Quobject.SocketIoClientDotNet.Client;

namespace DemoApp
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // Connect to the Socket.IO server
            var socket = IO.Socket("http://localhost:3000");

            // Listen for the "connect" event
            socket.On(Socket.EVENT_CONNECT, () =>
            {
                Console.WriteLine("Connected to the server!");

                // Emit a message to the server
                socket.Emit("message", "Hello from C# client!");

                // Listen for messages from the server
                socket.On("message", (data) =>
                {
                    Console.WriteLine("Message from server: " + data);
                });
            });

            // Listen for the "disconnect" event
            socket.On(Socket.EVENT_DISCONNECT, () =>
            {
                Console.WriteLine("Disconnected from the server!");
            });

            // Keep the console window open
            Console.ReadLine();
        }
    }
}

コードの説明

このスニペットでは、まずIO.Socket("http://localhost:3000")を呼び出すことでSocket.IOクライアントインスタンスを作成し、クライアントマシンのポート3000で動作しているローカルサーバーに接続します。

接続が成功すると(Socket.EVENT_CONNECT)、サーバーに接続したことを示すメッセージを出力します。

次に、socket.Emit("message", "Hello from C# client!")を使用してクライアントからサーバーにメッセージを送信します。 これにより、"Hello from C# client!"という内容のメッセージがサーバーに送信されます。

次に、socket.On("message", (data) => { ... }) を使用して"message" イベントのためにコールバックを登録することで、サーバーからのメッセージをリッスンします。 })。 クライアントからサーバーへの接続が切断された場合 (Socket.EVENT_DISCONNECT`)、切断を示すメッセージを印刷します。

クライアントからサーバーへの接続が切断された場合(Socket.EVENT_DISCONNECT)、切断を示すメッセージを出力します。

最後に、Console.ReadLine() メソッドはコンソールウィンドウを開いたままにし、プログラムの実行後にすぐに終了しないようにします。 Socket io .NET (開発者向けの機能): 図4 - サンプルコード

コードのスクリーンショット

Socket io .NET (開発者向けの使い方): 図4 - サンプルコード

ロングポーリングは、クライアント(通常はWebブラウザ)とサーバーの間でライブラリを使用してメッセージを送信するWeb開発で使用される技法です。

連続したポーリングを必要とせずに、クライアントが受信できるイベントをサーバー側でトリガーすることにより、リアルタイム通信を可能にします。 この方法は、チャットアプリケーションや株式ティッカーなどの即時更新が要求されるアプリケーションに特に有用です。 このメソッドは、チャットアプリケーションや株価ティッカーなど、即時の更新が必要なアプリケーションに特に便利です。

Socket io .NET (開発者向けの使い方): 図5 - HTTP ロングポーリング

WebSocketは、単一のTCP接続を介して全二重通信チャンネルを確立することによって双方向通信を促進します。

このプロトコルは、クライアント(通常はWebブラウザ)とサーバー間でリアルタイムの対話を可能にし、両方の当事者が非同期でメッセージを交換できるようにします。 このプロトコルは、通常はウェブブラウザーであるクライアントとサーバー間でのリアルタイムのインタラクションを可能にし、双方が非同期的にメッセージを交換できるようにします。

クライアントは、WebSocket接続を確立する意思を示すWebSocketハンドシェイク要求をサーバーに送信します。

ハンドシェイク要求を受信すると、サーバーはWebSocketハンドシェイク応答を返し、接続が正常に確立されたことを示します。 ハンドシェイク要求を受信すると、サーバーは WebSocket ハンドシェイク応答を返し、接続が正常に確立されたことを示します。 WebSocket 接続を介して送信されるメッセージは、任意のフォーマット (例: テキストまたはバイナリ) であり、非同期に送受信できます。

ウェブトランスポート

Web Transport は、従来の TCP や UDP プロトコルの限界を超えてウェブ通信を強化する追加機能を導入する最先端のプロトコルです。UDP と QUIC を活用して、前の世代の欠点に対処し、よりユーザーフレンドリーで効率的にしています。 ユーザーにとって、これはレイテンシの低減と改善された輻輳制御に変換され、最終的にはより滑らかで反応の良いウェブ体験を提供します。 さらに、ウェブトランスポートはより優れたセキュリティ対策を提供し、TCPに比べてより安全なデータ転送を保証します。これらの進展により、ウェブトランスポートはデータ転送の時間のかかる側面を軽減し、クライアントとサーバーの両方に対して全体的なパフォーマンスを最適化します。

ウェブアプリケーションでウェブトランスポートを使用する基本的な例は次のとおりです:

using System;
using System.Net.WebSockets;
using System.Threading;
using System.Threading.Tasks;

namespace SocketIO.Demo
{
    class Program
    {
        static async Task Main(string[] args)
        {
            // The WebSocket URI
            string uri = "wss://echo.websocket.org";

            // Creating a new WebSocket connection
            using (ClientWebSocket webSocket = new ClientWebSocket())
            {
                await webSocket.ConnectAsync(new Uri(uri), CancellationToken.None);
                Console.WriteLine("Connected to the server");

                // Sending data over the WebSocket
                byte[] sendBuffer = new byte[] { 1, 2, 3, 4 };
                await webSocket.SendAsync(new ArraySegment<byte>(sendBuffer), WebSocketMessageType.Binary, true, CancellationToken.None);
                Console.WriteLine("Data sent to the server");

                // Receiving data from the WebSocket
                byte[] receiveBuffer = new byte[1024];
                WebSocketReceiveResult result = await webSocket.ReceiveAsync(new ArraySegment<byte>(receiveBuffer), CancellationToken.None);
                byte[] data = new byte[result.Count];
                Array.Copy(receiveBuffer, data, result.Count);
                Console.WriteLine("Received data: " + BitConverter.ToString(data));
            }
        }
    }
}

この例では、まずWebSocket URL (wss://echo.websocket.org)を使用してサーバーへの新しいWebSocket接続を作成します。 次に、接続上で双方向ストリームを作成し、ストリームを介していくつかのデータ([1, 2, 3, 4])を送信します。 最後に、ストリームからデータを読み取り、それをコンソールにログします。

上記のコードの出力

WebSocketエコーサーバーでアプリケーションを実行すると、出力は次のようになります:

Socket io .NET (開発者向けの使い方): 図6 - WebSocket URLを使用したWebSocket接続のコンソール出力

ウェブトランスポートの利点

  • 現代の代替手段: Web Transport は、従来のウェブ通信プロトコルである TCP や UDP に対する現代の代替手段を提供します。
  • 効率的なデータ転送 : 複数のストリームと高度な機能を活用して、効率的なデータ転送を提供します。
  • 高パフォーマンス : レイテンシが低く、信頼性のあるデータ転送を求められる高パフォーマンスのウェブアプリケーションを構築するのに適しています。
  • マルチプレキシストリーム : マルチプレキシストリームをサポートしており、単一の接続上で複数のデータストリームを同時に送受信できます。
  • 革新: ウェブ開発者が Web Transport を採用し続ける中で、ウェブ通信プロトコルにおけるさらなる革新が期待できます。

IronPDFライブラリの紹介

IronPDF ライブラリの紹介

IronPDFは、C#を使用する開発者向けに特別に設計された包括的な.NET PDFライブラリです。 IronPDFを使用すると、開発者はHTML strings、HTML files、およびURLsからPDFドキュメントを生成できるため、多様なユースケースに非常に適しています。 IronPDF を使用すると、開発者は HTML 文字列、HTML ファイル、および URL から PDF ドキュメントを生成でき、多様なユースケースに対応する柔軟性があります。 さらに、IronPDF はヘッダー、フッター、水印の追加など、先進的な PDF 編集機能を提供します。 NuGet パッケージマネージャーを介した C# プロジェクトへのシームレスな統合により、PDF ファイルの取り扱いが簡素化され、開発が効率化され、生産性が向上します。

Socket io .NET (開発者向けの使い方): 図7 - IronPDF for .NET: C# PDF ライブラリ

NuGetパッケージマネージャでインストール

Visual Studio に IronPDF をインストールするか、コマンドラインから NuGet パッケージマネージャーを使用します。 - ツール -> NuGet パッケージマネージャ -> パッケージマネージャ コンソール

IronPDFのコード例

PM > Install-Package IronPdf

IronPDFのコード例

IronPDFを使用してバイナリデータをPDFファイルに変換する簡単な例があります。GeneratePDFメソッドを呼び出し、上記の例で使用したデータをパラメータとして渡します。

using System;
using System.Net.WebSockets;
using System.Threading;
using System.Threading.Tasks;

namespace SocketIO.Demo
{
    class Program
    {
        static async Task Main(string[] args)
        {
            // The WebSocket URI
            string uri = "wss://echo.websocket.org";

            // Creating a new WebSocket connection
            using (ClientWebSocket webSocket = new ClientWebSocket())
            {
                await webSocket.ConnectAsync(new Uri(uri), CancellationToken.None);
                Console.WriteLine("Connected to the server");

                // Sending data over the WebSocket
                byte[] sendBuffer = new byte[] { 1, 2, 3, 4 };
                await webSocket.SendAsync(new ArraySegment<byte>(sendBuffer), WebSocketMessageType.Binary, true, CancellationToken.None);
                Console.WriteLine("Data sent to the server");

                // Receiving data from the WebSocket
                byte[] receiveBuffer = new byte[1024];
                WebSocketReceiveResult result = await webSocket.ReceiveAsync(new ArraySegment<byte>(receiveBuffer), CancellationToken.None);
                byte[] data = new byte[result.Count];
                Array.Copy(receiveBuffer, data, result.Count);
                Console.WriteLine("Received data: " + BitConverter.ToString(data));

                // Data to generate in PDF file
                string pdfData = BitConverter.ToString(data);
                PDFGenerator.GeneratePDF(pdfData);
            }
        }
    }
}

PDF 生成クラスのコード

using IronPdf;

namespace SocketIO.Demo
{
    public class PDFGenerator
    {
        public static void GeneratePDF(string data)
        {
            IronPdf.License.LicenseKey = "Your-Licence-Key-Here";
            Console.WriteLine("PDF Generating Started...");

            // Instantiate Renderer
            var renderer = new ChromePdfRenderer();
            Console.WriteLine("PDF Processing ....");

            var pdf = renderer.RenderHtmlAsPdf($"<h1>Received Data</h1><p>{data}</p>");
            string filePath = "Data.pdf";
            pdf.SaveAs(filePath);
            Console.WriteLine($"PDF Generation Completed. File Saved as {filePath}");
        }
    }
}

出力

Socket io .NET (開発者向けの使い方): 図8 - Socket.IOとIronPDFを使用したコンソール出力

提供されたコードでは、IronPDF を使用して、WebSocket 接続によって受信した16進数の文字列から PDF ドキュメントを生成します。 GeneratePDF メソッドはライセンスキーを使用してIronPDFを初期化し、そのChromePdfRendererインスタンスを使用して16進文字列をHTMLコンテンツとしてPDFにレンダリングします。RenderHtmlAsPdf メソッドを使用して。 無料のライセンスキーはこちらから取得できます。 このPDFは、SaveAsメソッドを使用して"Data.pdf"としてローカルに保存されます。 ### 生成されたPDFファイル

Socket io .NET (開発者向けの機能): 図9 - IronPDFを使用して生成された出力PDF

Socket io .NET (開発者向けの使い方): 図9 - IronPDFを使用して生成された出力PDF

結論

.NETプロジェクトにSocket.IOやIronPDFなどのツールを統合することで、リアルタイム通信やPDF処理能力を大幅に強化することができます。 Socket.IOはクライアントとサーバー間でシームレスなリアルタイム双方向通信を促進し、IronPDFはPDFドキュメントを作成および操作するための強力な機能を提供します。 Socket.IOはクライアントとサーバー間のシームレスなリアルタイム双方向通信を容易にし、IronPDFは作成と操作のための堅牢な機能を提供します。

Jacob Mellor、Ironチームの最高技術責任者(CTO)
最高技術責任者(CTO)

ジェイコブ・メラーはIron Softwareの最高技術責任者(CTO)であり、C# PDFテクノロジーを開拓する先見的なエンジニアです。Iron Softwareのコアコードベースを支えるオリジナル開発者として、彼は創業以来、会社の製品アーキテクチャを形成し、CEOのCameron Rimingtonとともに、会社をNASA、Tesla、および世界的な政府機関にサービスを提供する50人以上の会社に変えました。1999年にロンドンで最初のソフトウェアビジネスを開業し、2005年に最初 for .NETコンポーネントを作成した後、Microsoftのエコシステム全体で複雑な問題を解決することを専門としました。

関連する記事

Key in blue circle

無料の30日間トライアルキーをすぐに入手してください。

Your trial license will be sent to your email address

制限なし。100% ロック解除済み。クレジットカード不要。

OR
bullet_checkedクレジットカードやアカウントの作成は不要です。制限なし。100% ロック解除済み。クレジットカード不要。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried Iron Suite
無料のライブデモを予約する
Booking Badge

世界中の数百万人のエンジニアから信頼されています。

ライセンスはより安く
義務のない相談を受ける
下記のフォームを記入するか、sales@ironsoftware.comにメールしてください。
あなたの詳細は常に守秘されます。
世界中の数百万人のエンジニアから信頼されています。
ライセンスはより安く
あなたの無料30日間の試用キーをすぐに入手。
クレジットカードやアカウントの作成は不要です。
PDF用C# NuGetライブラリ
NuGetでインストール

バージョン: 2026.9

PM > Install-Package IronPdf
nuget.org/packages/IronPdf/
  1. ソリューションエクスプローラーで参照を右クリックし、NuGetパッケージを管理を選択
  2. ブラウズを選択し、"IronPDF"を検索
  3. パッケージを選択してインストール
C# PDF DLL
DLLをダウンロード

バージョン: 2026.9

またはここからWindowsインストーラーをダウンロードする。

  1. IronPDFを~/Libsなどの場所に解凍し、ソリューションディレクトリ内に配置する
  2. Visual Studioソリューションエクスプローラーで参照を右クリックし、"IronPDF.dll"をブラウズして選択

ライセンスは$999から