WebSocket लाइब्रेरीज़ C# (.NET): SignalR, Fleck और WebSocketSharp
\n\nWebSocket TCP के ऊपर एक पूर्ण-द्वैध संचार प्रोटोकॉल है, जो सर्वर और क्लाइंट को बिना लगातार HTTP अनुरोधों के रीयल टाइम में डेटा का आदान-प्रदान करने की अनुमति देता है। C# (.NET) इकोसिस्टम में कई लाइब्रेरीज़ हैं जो WebSocket एकीकरण को सरल बनाती हैं। इस लेख में हम तीन सबसे लोकप्रिय समाधानों पर विचार करेंगे: SignalR (Microsoft की आधिकारिक लाइब्रेरी), Fleck (हल्का सर्वर) और WebSocketSharp (बहुमुखी क्लाइंट-सर्वर)।
\n\n1. SignalR — Microsoft का आधिकारिक उपकरण
\n\nSignalR ASP.NET Core के लिए एक उच्च-स्तरीय लाइब्रेरी है, जो क्लाइंट की क्षमताओं के आधार पर स्वचालित रूप से सर्वश्रेष्ठ ट्रांसपोर्ट (WebSocket, Server-Sent Events, Long Polling) चुनती है। यह चैट, डैशबोर्ड और गेम बनाने के लिए आदर्श है।
\n\nमुख्य विशेषताएं:
\n- \n
- ट्रांसपोर्ट के बीच स्वचालित स्विचिंग। \n
- समूह और प्रसारण संदेश। \n
- स्केलिंग के लिए समर्थन (Redis, Azure SignalR Service)। \n
- JavaScript, .NET, Java पर क्लाइंट के साथ एकीकरण। \n
C# में सर्वर हब का उदाहरण:
\nusing Microsoft.AspNetCore.SignalR;\n\npublic class ChatHub : Hub\n{\n public async Task SendMessage(string user, string message)\n {\n // सभी कनेक्टेड क्लाइंट को संदेश भेजें\n await Clients.All.SendAsync("ReceiveMessage", user, message);\n }\n\n public override async Task OnConnectedAsync()\n {\n await Clients.Caller.SendAsync("Notify", "आप चैट से जुड़ गए हैं");\n await base.OnConnectedAsync();\n }\n}\n\nC# (कंसोल) में क्लाइंट का उदाहरण:
\nusing Microsoft.AspNetCore.SignalR.Client;\n\nvar connection = new HubConnectionBuilder()\n .WithUrl("https://yourserver.com/chathub")\n .Build();\n\nconnection.On<string, string>("ReceiveMessage", (user, message) =>\n{\n Console.WriteLine($"{user}: {message}");\n});\n\nawait connection.StartAsync();\nawait connection.InvokeAsync("SendMessage", "User1", "नमस्ते!");\n\n2. Fleck — न्यूनतम WebSocket सर्वर
\n\nFleck ASP.NET पर निर्भरता के बिना WebSocket सर्वर बनाने के लिए एक हल्की लाइब्रेरी है। यह सरल अनुप्रयोगों के लिए आदर्श है जहाँ SignalR की जटिल अमूर्तताओं की आवश्यकता नहीं है।
\n\nविशेषताएं:
\n- \n
- शुद्ध TCP पर काम करता है (HTTP के बिना)। \n
- SSL (WSS) का समर्थन करता है। \n
- कोई अंतर्निहित स्केलिंग नहीं — केवल एक प्रक्रिया। \n
Fleck पर सर्वर का उदाहरण:
\nusing Fleck;\n\nvar server = new WebSocketServer("ws://0.0.0.0:8181");\nvar connections = new List<IWebSocketConnection>();\n\nserver.Start(socket =>\n{\n socket.OnOpen = () =>\n {\n Console.WriteLine("क्लाइंट जुड़ा");\n connections.Add(socket);\n };\n socket.OnClose = () =>\n {\n Console.WriteLine("क्लाइंट डिस्कनेक्ट हुआ");\n connections.Remove(socket);\n };\n socket.OnMessage = message =>\n {\n // सभी को संदेश भेजें\n foreach (var client in connections)\n {\n client.Send($"इको: {message}");\n }\n };\n});\n\nConsole.WriteLine("सर्वर ws://localhost:8181 पर शुरू हुआ");\nConsole.ReadLine();\n\n3. WebSocketSharp — बहुमुखी क्लाइंट और सर्वर
\n\nWebSocketSharp एक ओपन-सोर्स लाइब्रेरी है जो क्लाइंट और सर्वर दोनों WebSocket प्रदान करती है। यह ASP.NET पर निर्भर नहीं है और .NET Framework और .NET Core पर काम करती है।
\n\nमुख्य विशेषताएं:
\n- \n
- SSL/TLS और प्रॉक्सी के लिए समर्थन। \n
- ईवेंट-आधारित मॉडल (OnOpen, OnClose, OnMessage, OnError)। \n
- बाइनरी डेटा (byte[]) भेजना। \n
WebSocketSharp पर क्लाइंट का उदाहरण:
\nusing WebSocketSharp;\n\nusing (var ws = new WebSocket("wss://echo.websocket.org"))\n{\n ws.OnMessage += (sender, e) =>\n