WebSocket-Bibliotheken für C# (.NET): SignalR, Fleck, WebSocketSharp

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

WebSocket-Bibliotheken für C# (.NET): SignalR, Fleck und WebSocketSharp



WebSocket ist ein Protokoll für die Vollduplex-Kommunikation über TCP, das es Server und Client ermöglicht, in Echtzeit Daten auszutauschen, ohne ständige HTTP-Anfragen. Im C# (.NET)-Ökosystem gibt es mehrere Bibliotheken, die die Integration von WebSocket vereinfachen. In diesem Artikel betrachten wir drei der beliebtesten Lösungen: SignalR (offizielle Microsoft-Bibliothek), Fleck (leichter Server) und WebSocketSharp (universeller Client-Server).



1. SignalR – offizielles Tool von Microsoft



SignalR ist eine hochwertige Bibliothek für ASP.NET Core, die automatisch den besten Transport (WebSocket, Server-Sent Events, Long Polling) basierend auf den Fähigkeiten des Clients auswählt. Sie eignet sich ideal für die Erstellung von Chats, Dashboards und Spielen.



Hauptfunktionen:

  • Automatische Umschaltung zwischen Transporten.
  • Gruppen und Broadcast-Nachrichten.
  • Unterstützung für Skalierung (Redis, Azure SignalR Service).
  • Integration mit Clients auf JavaScript, .NET, Java.


Beispiel eines Server-Hubs in C#:

using Microsoft.AspNetCore.SignalR;

public class ChatHub : Hub{ public async Task SendMessage(string user, string message) { // Sende Nachricht an alle verbundenen Clients await Clients.All.SendAsync("ReceiveMessage", user, message); }

public override async Task OnConnectedAsync() { await Clients.Caller.SendAsync("Notify", "Sie haben sich mit dem Chat verbunden"); await base.OnConnectedAsync(); }}


Beispiel eines Clients in C# (Konsole):

using Microsoft.AspNetCore.SignalR.Client;

var connection = new HubConnectionBuilder() .WithUrl("https://yourserver.com/chathub") .Build();

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

await connection.StartAsync();await connection.InvokeAsync("SendMessage", "User1", "Hallo!");


2. Fleck – minimalistischer WebSocket-Server



Fleck ist eine leichte Bibliothek zur Erstellung von WebSocket-Servern ohne Abhängigkeiten von ASP.NET. Sie eignet sich ideal für einfache Anwendungen, bei denen keine komplexen Abstraktionen wie bei SignalR erforderlich sind.



Besonderheiten:

  • Funktioniert auf reinem TCP (ohne HTTP).
  • Unterstützt SSL (WSS).
  • Keine integrierte Skalierung – nur ein Prozess.


Beispiel eines Servers mit Fleck:

using Fleck;

var server = new WebSocketServer("ws://0.0.0.0:8181");var connections = new List<IWebSocketConnection>();

server.Start(socket =>{ socket.OnOpen = () => { Console.WriteLine("Client verbunden"); connections.Add(socket); }; socket.OnClose = () => { Console.WriteLine("Client getrennt"); connections.Remove(socket); }; socket.OnMessage = message => { // Sende Nachricht an alle foreach (var client in connections) { client.Send($"Echo: {message}"); } };});

Console.WriteLine("Server gestartet auf ws://localhost:8181");Console.ReadLine();


3. WebSocketSharp – universeller Client und Server



WebSocketSharp ist eine Open-Source-Bibliothek, die sowohl einen Client- als auch einen Server-WebSocket bereitstellt. Sie ist unabhängig von ASP.NET und funktioniert mit .NET Framework und .NET Core.



Wichtige Funktionen:

  • Unterstützung für SSL/TLS und Proxy.
  • Ereignisgesteuertes Modell (OnOpen, OnClose, OnMessage, OnError).
  • Senden von Binärdaten (byte[]).


Beispiel eines Clients mit WebSocketSharp:

using WebSocketSharp;

using (var ws = new WebSocket("wss://echo.websocket.org")){ ws.OnMessage += (sender, e) =>

Empfehlungen