WebSocket-Bibliothek für C# (.NET): SignalR und Alternativen

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-Bibliothek C# (.NET): SignalR und alternative Werkzeuge für Echtzeitkommunikation



In der modernen Webentwicklung ist der Bedarf an bidirektionaler Echtzeitkommunikation zum Standard geworden. Chat-Anwendungen, Online-Spiele, Handelsplattformen, Serverüberwachung – all dies erfordert eine sofortige Datenübertragung. Für die Sprache C# (.NET) gibt es mehrere leistungsstarke Bibliotheken, die das WebSocket-Protokoll implementieren. In diesem Artikel werden wir uns ausführlich mit SignalR befassen – der Flaggschiff-Bibliothek von Microsoft – und auch Alternativen betrachten: WebSocketSharp und Fleck. Sie erfahren, wie Sie das passende Werkzeug auswählen und schnell loslegen können.



Was ist WebSocket und warum wird es in C# benötigt

WebSocket ist ein Protokoll, das eine Vollduplex-Kommunikation zwischen Client und Server über eine einzige langlebige TCP-Verbindung ermöglicht. Im Gegensatz zu HTTP, bei dem der Client eine Anfrage sendet und auf eine Antwort wartet, erlaubt WebSocket dem Server, jederzeit Daten zu senden. Für die .NET-Plattform ist dies besonders wichtig, da C# traditionell stark in der Serverentwicklung ist und WebSocket seine Möglichkeiten für Echtzeit-Szenarien erweitert.



SignalR – die offizielle Lösung von Microsoft

SignalR ist eine Bibliothek für ASP.NET Core, die die Arbeit mit WebSocket abstrahiert und eine hochwertige API bereitstellt. Sie wählt automatisch den besten Transport aus: WebSocket, Server-Sent Events (SSE) oder Long Polling. SignalR ist ideal für Enterprise-Projekte, bei denen Skalierbarkeit und Integration in das .NET-Ökosystem wichtig sind.



Installation von SignalR

dotnet add package Microsoft.AspNetCore.SignalR


Beispiel eines einfachen Chats mit SignalR

Wir erstellen einen Hub – die zentrale Klasse zur Verwaltung von Verbindungen:

using Microsoft.AspNetCore.SignalR;

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


Konfiguration in Program.cs:

var builder = WebApplication.CreateBuilder(args);builder.Services.AddSignalR();

var app = builder.Build();app.MapHub<ChatHub>("/chat");

app.Run();


Client in JavaScript:

const connection = new signalR.HubConnectionBuilder()    .withUrl("/chat")    .build();

connection.on("ReceiveMessage", (user, message) => { console.log(`${user}: ${message}`);});

connection.start().catch(err => console.error(err));


Vorteile von SignalR:

  • Automatische Transportauswahl (WebSocket, SSE, Long Polling)
  • Unterstützung für Gruppenbroadcasts und einzelne Benutzer
  • Integrierte Wiederherstellung der Verbindung bei Unterbrechungen
  • Integration mit ASP.NET Core Identity-Authentifizierung
  • Skalierung über Redis Backplane oder Azure SignalR Service


Nachteile:

  • Schwergewichtig für einfache Projekte
  • Abhängigkeit von ASP.NET Core (funktioniert nicht in Konsolenanwendungen)
  • Komplexität bei der Konfiguration in nicht standardmäßigen Szenarien


WebSocketSharp – eine leichte Bibliothek für .NET Framework und .NET Core

WebSocketSharp ist eine minimalistische Bibliothek, die das WebSocket-Protokoll ohne überflüssige Abstraktionen implementiert. Sie eignet sich sowohl für serverseitige als auch für clientseitige WebSocket-Verbindungen. Ideal für die Integration in Konsolenanwendungen oder Unity-Spiele.



Installation über NuGet

dotnet add package WebSocketSharp


Beispiel eines WebSocket-Servers

using WebSocketSharp;using WebSocketSharp.Server;

public class Echo : WebSocketBehavior{ protected override void OnMessage(MessageEventArgs e) { Send($"Echo: {e.Data}"); }}

class Program{ static void Main() { va

Empfehlungen