C# (.NET) के लिए WebSocket लाइब्रेरीज़: SignalR, WebSocket4Net और System.Net.WebSockets क्लाइंट

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

C# (.NET) के लिए WebSocket लाइब्रेरीज़: आपके अनुप्रयोगों में रीयल-टाइम



WebSocket एक प्रोटोकॉल है जो क्लाइंट और सर्वर के बीच स्थायी द्विदिश कनेक्शन प्रदान करता है। C# (.NET) इकोसिस्टम में WebSocket के साथ काम करने के लिए कई परिपक्व लाइब्रेरीज़ मौजूद हैं, जो सर्वर अनुप्रयोगों (ASP.NET Core) और क्लाइंट (डेस्कटॉप, मोबाइल, कंसोल) दोनों के लिए उपयुक्त हैं। इस लेख में हम तीन प्रमुख टूल्स पर विचार करेंगे: SignalR (उच्च-स्तरीय फ्रेमवर्क), WebSocket4Net (क्रॉस-प्लेटफ़ॉर्म क्लाइंट) और अंतर्निहित System.Net.WebSockets (निम्न-स्तरीय API)।



1. SignalR — रीयल-टाइम के लिए सार्वभौमिक फ्रेमवर्क



SignalR ASP.NET Core का एक हिस्सा है जो WebSocket, Server-Sent Events और Long Polling के साथ काम करने को अमूर्त करता है। यह स्वचालित रूप से सर्वोत्तम ट्रांसपोर्ट चुनता है और समूहों, व्यक्तिगत उपयोगकर्ताओं और सभी कनेक्टेड क्लाइंट्स को संदेश भेजने के लिए सुविधाजनक API प्रदान करता है।



स्थापना

dotnet add package Microsoft.AspNetCore.SignalR


सर्वर उदाहरण (Hub)

using Microsoft.AspNetCore.SignalR;

public class ChatHub : Hub{ public async Task SendMessage(string user, string message) { // सभी कनेक्टेड क्लाइंट्स को संदेश भेजें await Clients.All.SendAsync("ReceiveMessage", user, message); }

public override async Task OnConnectedAsync() { await base.OnConnectedAsync(); Console.WriteLine($"क्लाइंट कनेक्ट हुआ: {Context.ConnectionId}"); }

public override async Task OnDisconnectedAsync(Exception? exception) { await base.OnDisconnectedAsync(exception); Console.WriteLine($"क्लाइंट डिस्कनेक्ट हुआ: {Context.ConnectionId}"); }}


क्लाइंट उदाहरण (C#)

using Microsoft.AspNetCore.SignalR.Client;

var connection = new HubConnectionBuilder() .WithUrl("https://localhost:5001/chatHub") .Build();

connection.On<string, string>("ReceiveMessage", (user, message) =>{ Console.WriteLine($"{user}: {message}");});

await connection.StartAsync();await connection.InvokeAsync("SendMessage", "बॉट", "नमस्ते, दुनिया!");


2. WebSocket4Net — .NET Framework और .NET Core के लिए हल्का क्लाइंट



WebSocket4Net एक स्वतंत्र लाइब्रेरी है जो मानक WebSocket (RFC 6455) और मालिकाना एक्सटेंशन (जैसे, स्व-हस्ताक्षरित प्रमाणपत्रों के साथ WSS) दोनों का समर्थन करती है। यह विशेष रूप से .NET Framework (Windows Forms, WPF) या सीमित आधुनिक API समर्थन वाले वातावरण में चलने वाले अनुप्रयोगों के लिए उपयोगी है।



NuGet के माध्यम से स्थापना

Install-Package WebSocket4Net


क्लाइंट उदाहरण

using WebSocket4Net;

var ws = new WebSocket("wss://echo.websocket.org");

ws.Opened += (s, e) =>{ Console.WriteLine("कनेक्शन स्थापित हुआ"); ws.Send("नमस्ते, WebSocket!");};

ws.MessageReceived += (s, e) =>{ Console.WriteLine($"प्राप्त हुआ: {e.Message}");};

ws.Closed += (s, e) =>{ Console.WriteLine("कनेक्शन बंद हुआ");};

ws.Error += (s, e) =>{ Console.WriteLine($"त्रुटि: {e.Exception.Message}");};

ws.Open();Console.ReadLine();


3. System.Net.WebSockets — अंतर्निहित निम्न-स्तरीय API



.NET Framework 4.5 से शुरू होकर और .NET Core के सभी संस्करणों में, अंतर्निहित वर्ग System.Net.WebSockets.ClientWebSocket उपलब्ध है। इसे अतिरिक्त पैकेज स्थापित करने की आवश्यकता नहीं है और यह कनेक्शन पर पूर्ण नियंत्रण देता है, लेकिन बफ़र्स और एसिंक्रोनस संचालन के मैन्युअल प्रबंधन की आवश्यकता होती है।



ClientWebSocket का उपयोग करके क्लाइंट उदाहरण

using System.Net.WebSockets;using System.Text;

public async Task ConnectAndSendAsync(string uri){ using var ws = new ClientWebSocket(); await ws.ConnectAsync(new Uri(uri), CancellationTok

अनुशंसाएँ