ライブ環境でテストする
ウォーターマークなしで本番環境でテストしてください。
必要な場所でいつでも動作します。
についてSocket.IOサーバーは、リアルタイムで双方向かつイベント駆動型の通信を促進する強力なライブラリとして機能します。 それは、チャットアプリケーション、ライブアップデート、共同プラットフォームなどのタスクのためにウェブアプリケーションで広く使用されています。 Socket.IOは通常JavaScriptと関連付けられていますが、クライアント側でC#と共に効果的に使用することもできます。 時々、クライアントはウェブブラウザであることがあります。 この記事では、C#環境でSocket.IOクライアントを設定し使用する方法を探ります。 基本的な例をいくつか見ていき、利点と潜在的な使用例で締めくくります。
についてSocket.IO接続は、さまざまな低レベルのトランスポートで確立できます。
ウェブソケット
Visual Studio を開き、スタートウィンドウで新しいプロジェクトの作成を選択します。
Visual Studio 2022でコンソールアプリケーションを作成するには、Visual Studioを起動し、スタートウィンドウで「新しいプロジェクトの作成」を選択します。 「Console App」テンプレートを選択し、プロジェクトに名前と場所を設定して、.NET 6.0が選択されていることを確認してください。
Socket.IO、JavaScriptライブラリは、ウェブクライアントとサーバーがリアルタイムコミュニケーションを行うことを可能にします。 それは二つの部分で構成されています。
.NET アプリケーションで Socket.IO を使用するにはビジュアルスタジオ互換性のあるサーバー実装が必要です。 そのような実装の一つに、.NET 用の SocketIoClientDotNet があります。これにより、C# アプリケーションから Socket.IO に接続する Socket IO クライアントを使用できます。
まず、必要なNuGetパッケージをインストールします。 パッケージマネージャーコンソールを介して、またはプロジェクトファイルに参照を追加することによってこれを行うことができます。
Install-Package SocketIoClientDotNet
Install-Package SocketIoClientDotNet
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'Install-Package SocketIoClientDotNet
このコマンドを実行すると、Socket.IOクライアントライブラリが.NETプロジェクトに組み込まれ、C#アプリケーションがSocket.IOサーバーに接続できるようになり、ユーザーとシステム間の通信を促進します。
C#クライアントに入る前に、Visual Studioで.NET Coreコンソールアプリを使用してSocket IOの基本的な例を設定しましょう。 これはクライアントの実装をテストするのに役立ちます。
以下のコードは、C#で書かれた基本的なSocket.IOサーバーを設定し、ポート3000でクライアントの接続を待ち受けます。クライアントがメッセージを送信すると、そのメッセージをログに記録し、受領を確認してクライアントに返信します。
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();
}
}
}
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();
}
}
}
Imports System
Imports System.Net.WebSockets
Imports System.Text
Imports System.Threading
Imports System.Threading.Tasks
Imports Quobject.SocketIoClientDotNet.Client
Namespace DemoApp
Friend Class Program
Shared Sub Main(ByVal args() As String)
' Connect to the Socket.IO server
Dim socket = IO.Socket("http://localhost:3000")
' Listen for the "connect" event
socket.On(Socket.EVENT_CONNECT, Sub()
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", Sub(data)
Console.WriteLine("Message from server: " & data)
End Sub)
End Sub)
' Listen for the "disconnect" event
socket.On(Socket.EVENT_DISCONNECT, Sub()
Console.WriteLine("Disconnected from the server!")
End Sub)
' Keep the console window open
Console.ReadLine()
End Sub
End Class
End Namespace
スニペットでは、最初にIO.Socketを呼び出してSocket.IOクライアントインスタンス/送信者を作成します。("https://localhost:3000")クライアントマシンのポート3000で動作しているローカルサーバーに接続します。
接続が成功すると(Socket.EVENT_CONNECT)サーバーに接続されていることを示すメッセージを印刷します。
次に、クライアントからサーバーにメッセージを送信するために、socket.Emitを使用します。(「メッセージ」、「C# クライアントからこんにちは」!"). これは「C#クライアントからこんにちは」という内容のメッセージを送信します。!"サーバーへ。
次に、socket.Onを使用して「message」イベントのコールバックを登録し、サーバーからのメッセージを待ちます。("メッセージ"(データ) => {... }). サーバーが「message」イベントを送信すると、コールバック関数が呼び出され、受信したメッセージがコンソールに表示されます。
クライアントからサーバーへの接続が切断された場合(Socket.EVENT_DISCONNECT)、切断を示すメッセージを印刷します。
最後に、Console.ReadLine()メソッドはコンソールウィンドウを開いたままにして、プログラムが実行後すぐに終了しないようにします。 これにより出力を確認することができ、プログラムが早期に終了しないことを保証します。
ロングポーリングは、クライアント間でメッセージを送信するためにライブラリを使用するウェブ開発の技法です。(通常はウェブブラウザ)そしてサーバー。 サーバー上でイベントをトリガーし、クライアントが連続ポーリングすることなく受信できるようにすることで、リアルタイム通信を可能にします。 この方法は、チャットアプリケーションや株価ティッカーのように即時更新を必要とするアプリケーションに特に有用です。
WebSocketは単一のTCP接続を介して双方向通信を容易にし、全二重通信チャネルを確立します。 このプロトコルは、クライアント(通常はウェブブラウザ)とサーバーとの間でリアルタイムの相互作用を可能にし、両者が非同期でメッセージを交換することを可能にします。
クライアントはWebSocket接続を確立したいという意図を示して、サーバーにWebSocketハンドシェイクリクエストを送信します。 ハンドシェイクリクエストを受信すると、サーバーはWebSocketハンドシェイク応答で応答し、接続が正常に確立されたことを示します。 WebSocket接続を介して送信されるメッセージは、任意の形式で可能です。(例えば、テキストまたはバイナリ)非同期で送信および受信することができます。
Web Transportは、最先端のプロトコルとして、TCPやUDPのような従来のプロトコルの限界を超えてウェブコミュニケーションを強化するための追加機能を導入します。UDPとQUICを活用することにより、従来のプロトコルの欠点を克服し、よりユーザーフレンドリーで効率的です。 これにより、ユーザーにとって遅延が減少し、輻輳制御が向上し、最終的にはよりスムーズで応答性の高いウェブ体験を提供します。 さらに、Web Transportはより優れたセキュリティ対策を提供し、TCPと比較してより安全なデータ伝送を保証します。これらの進歩により、Web Transportはデータ転送の時間がかかる側面を軽減し、クライアントとサーバーの全体的なパフォーマンスを最適化します。
以下は、WebアプリケーションでWeb Transportを使用する基本的な例です。
using System;
using System.Net.WebSockets;
using System.Text;
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));
}
}
}
}
using System;
using System.Net.WebSockets;
using System.Text;
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));
}
}
}
}
Imports System
Imports System.Net.WebSockets
Imports System.Text
Imports System.Threading
Imports System.Threading.Tasks
Namespace SocketIO.Demo
Friend Class Program
Shared Async Function Main(ByVal args() As String) As Task
' The WebSocket URI
Dim uri As String = "wss://echo.websocket.org"
' Creating a new WebSocket connection
Using webSocket As New ClientWebSocket()
Await webSocket.ConnectAsync(New Uri(uri), CancellationToken.None)
Console.WriteLine("Connected to the server")
' Sending data over the WebSocket
Dim sendBuffer() As Byte = { 1, 2, 3, 4 }
Await webSocket.SendAsync(New ArraySegment(Of Byte)(sendBuffer), WebSocketMessageType.Binary, True, CancellationToken.None)
Console.WriteLine("Data sent to the server")
' Receiving data from the WebSocket
Dim receiveBuffer(1023) As Byte
Dim result As WebSocketReceiveResult = Await webSocket.ReceiveAsync(New ArraySegment(Of Byte)(receiveBuffer), CancellationToken.None)
Dim data(result.Count - 1) As Byte
Array.Copy(receiveBuffer, data, result.Count)
Console.WriteLine("Received data: " & BitConverter.ToString(data))
End Using
End Function
End Class
End Namespace
この例では、まず WebSocket URL を使用してサーバーに新しい WebTransport 接続を作成します。(wss://echo.websocket.org). 次に、接続上に双方向ストリームを作成して、データを送信します。([1, 2, 3, 4])ストリームを越えて。 最後に、ストリームからデータを読み取り、コンソールにログを記録します。
WebSocketエコーサーバーでアプリケーションを実行すると、出力は次のようになります。
現代的代替案: Web Transportは、TCPやUDPのような従来のウェブ通信プロトコルに対する現代的な代替手段を提供します。
効率的なデータ転送: 複数のストリームや高度な機能を活用することで効率的なデータ転送を提供します。
高性能: 低遅延で信頼性のあるデータ転送を必要とする高性能なウェブアプリケーションの構築に適しています。
多重化ストリーム: 単一の接続を通じて、複数のデータストリームを同時に送受信できる多重化ストリームをサポートします。
革新: ウェブ開発者がWeb Transportを採用し続けるにつれて、ウェブ通信プロトコルにおいてさらなる革新が見込まれます。
ユーザーエクスペリエンスの向上: Web Transportの採用により、データ転送が速く、より信頼性が高まることで、ウェブ上でユーザーエクスペリエンスが向上する可能性があります。
IronPDFは、C#を使用する開発者向けに特別に設計された総合的な.NET PDFライブラリです。 この強力なツールは、開発者が簡単に作成, 操作する、および読込アプリケーション内のPDFファイル。 IronPDFを使用すると、開発者はPDFドキュメントを生成できます。HTML文字列, HTMLファイル、およびURLさまざまな使用ケースに非常に多用途であるため。 さらに、IronPDFはヘッダー、フッター、透かしなどを追加する高度なPDF編集機能を提供しています。 そのシームレスなC#プロジェクトへの統合は、NuGetパッケージマネージャーを介してPDFファイルを扱うプロセスを簡素化し、開発を合理化し、生産性を向上させます。
Visual StudioでIronPDFをインストールするか、コマンドラインからNuGetパッケージマネージャーを使用してインストールします。 Visual Studioでコンソールに移動します:
Install-Package IronPdf
Install-Package IronPdf
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'Install-Package IronPdf
以下は、を使用した簡単な例です。IronPDFビットデータをPDFファイルに変換するには、MainメソッドでGeneratePDFメソッドを呼び出し、上記の例で使用したデータをパラメーターとして渡します。
using System;
using System.Net.WebSockets;
using System.Text;
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);
}
}
}
}
using System;
using System.Net.WebSockets;
using System.Text;
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);
}
}
}
}
Imports System
Imports System.Net.WebSockets
Imports System.Text
Imports System.Threading
Imports System.Threading.Tasks
Namespace SocketIO.Demo
Friend Class Program
Shared Async Function Main(ByVal args() As String) As Task
' The WebSocket URI
Dim uri As String = "wss://echo.websocket.org"
' Creating a new WebSocket connection
Using webSocket As New ClientWebSocket()
Await webSocket.ConnectAsync(New Uri(uri), CancellationToken.None)
Console.WriteLine("Connected to the server")
' Sending data over the WebSocket
Dim sendBuffer() As Byte = { 1, 2, 3, 4 }
Await webSocket.SendAsync(New ArraySegment(Of Byte)(sendBuffer), WebSocketMessageType.Binary, True, CancellationToken.None)
Console.WriteLine("Data sent to the server")
' Receiving data from the WebSocket
Dim receiveBuffer(1023) As Byte
Dim result As WebSocketReceiveResult = Await webSocket.ReceiveAsync(New ArraySegment(Of Byte)(receiveBuffer), CancellationToken.None)
Dim data(result.Count - 1) As Byte
Array.Copy(receiveBuffer, data, result.Count)
Console.WriteLine("Received data: " & BitConverter.ToString(data))
' Data to Generate in PDF File
Dim pdfData As String = BitConverter.ToString(data)
PDFGenerator.GeneratePDF(pdfData)
End Using
End Function
End Class
End Namespace
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(data);
string filePath = "Data.pdf";
pdf.SaveAs(filePath);
Console.WriteLine($"PDF Generation Completed,File Saved as ${filePath}");
}
}
}
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(data);
string filePath = "Data.pdf";
pdf.SaveAs(filePath);
Console.WriteLine($"PDF Generation Completed,File Saved as ${filePath}");
}
}
}
Imports IronPdf
Namespace SocketIO.Demo
Public Class PDFGenerator
Public Shared Sub GeneratePDF(ByVal data As String)
IronPdf.License.LicenseKey = "Your-Licence-Key-Here"
Console.WriteLine("PDF Generating Started...")
' Instantiate Renderer
Dim renderer = New ChromePdfRenderer()
Console.WriteLine("PDF Processing ....")
Dim pdf = renderer.RenderHtmlAsPdf(data)
Dim filePath As String = "Data.pdf"
pdf.SaveAs(filePath)
Console.WriteLine($"PDF Generation Completed,File Saved as ${filePath}")
End Sub
End Class
End Namespace
提供されたコードでは、IronPDFを使用して、WebSocket接続を介して受信した16進文字列からPDFドキュメントを生成します。 GeneratePDF メソッドは、ライセンスキーで IronPDF を初期化し、その ChromePdfRenderer インスタンスを使用して、RenderHtmlAsPdf メソッドを通じて 16 進文字列を HTML コンテンツとして PDF にレンダリングします。 から無料のライセンスキーを取得できます。これ. このPDFは、その後、SaveAsメソッドを使用してローカルに「Data.pdf」として保存されます。 IronPDFの統合により、動的なWebSocketデータをシームレスに構造化されたPDF形式に変換できるため、リアルタイムデータストリームをアーカイブ文書に変換する際の有用性が示されます。
利用Socket.IOC# を使用することで、JavaScript や Node.js の領域を超えて、接続されたクライアントとのリアルタイムの対話の機会が数多く提供されます。 ツールの統合などSocket.IO以下のコンテンツを日本語に翻訳してください:IronPDFあなたの.NETプロジェクトに組み込むことで、リアルタイムの通信とPDF処理機能を大幅に強化することができます。 Socket.IOは、クライアントとサーバー間のシームレスなリアルタイム双方向通信を可能にし、IronPDFは堅牢な機能を提供します。作成以下のコンテンツを日本語に翻訳してください:操縦PDFドキュメントを簡単に。
IronPDFそのフルポテンシャルを解き放ち、C#アプリケーションで効率的かつ信頼性の高いPDF生成と操作を確保します。
9つの .NET API製品 オフィス文書用