.NET WebSocket libraries — Vergleichsleitfaden

Eine neutrale, quellenbasierte Übersicht der WebSocket-Bibliotheken, die .NET-Entwicklern 2026 zur Verfügung stehen: sgcWebSockets .NET, System.Net.WebSockets, ASP.NET Core SignalR, WebSocket-Sharp, Fleck und Watson WebSocket. Jede Aussage zu einer Funktion verlinkt auf die offizielle Projektdokumentation.

Sechs Bibliotheken zur Auswahl

Eine Zusammenfassung jeder Bibliothek in einem Absatz, mit Link zur offiziellen Dokumentation bzw. zum Repository.

System.Net.WebSockets

Microsoft · MIT (Teil von .NET)

The low-level WebSocket API integriertto .NET itself. Bietet ClientWebSocket for clients and a server abstract WebSocket class consumed by ASP.NET Core, Kestrel, and HttpListener. RFC 6455 framing and per-message-deflate (WebSocketDeflateOptions) are erstklassig unterstützt.

Offizielle Seite

ASP.NET Core SignalR

Microsoft · MIT (Teil von ASP.NET Core)

Microsofts High-Level-Echtzeit-Framework. Setzt auf WebSocket, Server-Sent Events und Long Polling auf (in dieser Fallback-Reihenfolge) und stellt eine Hub-RPC-API anstelle von Roh-Frames bereit. JSON- oder MessagePack-Hub-Protokolle; skaliert über Azure SignalR Service oder ein Redis-Backplane.

Offizielle Seite

WebSocket-Sharp

sta.blockhead · MIT

Long-running open-source C# WebSocket client and server. Targets .NET Framework 3.5 and later (and Mono), implementiert RFC 6455 with per-message-deflate (no context takeover). The GitHub repository bietet keine getaggtes Releases — users typically take die neuste master or auf einen Commit-Hash pinnen.

Offizielle Seite

Fleck

Jason Staten / community · MIT

Server-only C# WebSocket library that does not depend on HttpListener or HTTP.SYS — it horcht auf a Raw-Socket. Bietet keine client side, no HTTP server, and keine eingebaute TLS termination outside den X509-Zertifikat path. Latest getaggtes Release is 0.14.0 from October 2016.

Offizielle Seite

Watson WebSocket

Joel Christner · MIT

Asynchroner C#-WebSocket-Client und -Server mit ereignisbasierter API. Zielt auf .NET Framework 4.8 und .NET 7.0. Das Repository wurde im Mai 2024 archiviert, mit dem Hinweis, dass es in Watson Webserver integriert wurde.

Offizielle Seite

Funktionsvergleich nebeneinander

Ein Häkchen () bedeutet, dass das Projekt native Unterstützung dokumentiert. Ein Strich () bedeutet, dass das Projekt es nicht nativ bereitstellt. Eine Tilde (~) bedeutet teilweise / über Add-on / nicht ausdrücklich dokumentiert - was wir verifizieren konnten, findest du im Abschnitt Quellen.

Protokolle, Transport, Lizenzierung

16 Zeilen
Funktion sgcWebSockets .NET System.Net.WebSockets ASP.NET Core SignalR WebSocket-Sharp Fleck Watson WebSocket
WebSocket Client RFC-6455-Client
WebSocket Server RFC-6455-Server
TLS 1.3 TLS 1.3 vom bereitgestellten Transport unterstützt ~ ~
HTTP/2 Client Nativer HTTP/2-Client (RFC 7540 / 9113) ~
MQTT MQTT-3.1.1-/-5.0-Client integriert
AMQP AMQP-0.9.1-/-1.0-Client integriert
STOMP STOMP-1.0-/-1.2-Client integriert
WAMP WAMP-v1-/-v2-Client integriert
Server Push / Streaming Langlebige Push- oder Streaming-Verbindung
Auto-Reconnect Eingebautes Client-Auto-Reconnect/WatchDog
per-message-deflate (RFC 7692) WebSocket-Komprimierungserweiterung ~ ~
Multiplattform Win / macOS / Linux / iOS / Android ~
Kommerzielle Nutzung erlaubt Lizenz erlaubt kommerzielle Closed-Source-Nutzung
Source code verfügbar Quellcode ist für die Entwicklerin/den Entwickler sichtbar
Aktive Wartung Release oder getaggte Aktivität in den letzten 12-18 Monaten ~
Lizenzmodell Lizenztyp Commercial MIT (part of .NET) MIT (part of ASP.NET Core) MIT MIT MIT
Dokumentierte native Unterstützung Nicht nativ bereitgestellt ~ Teilweise / über Add-on / nicht verifiziert

Ehrliche Einordnung jeder Bibliothek

Jede Bibliothek hier hat ihr berechtigtes Publikum. Die richtige Wahl hängt von deinen Laufzeitzielen, deiner Protokollbreite und davon ab, ob du eine RPC-artige Hub-API oder rohe WebSocket-Frames bevorzugst.

sgcWebSockets .NET wählen

Wähle sgcWebSockets .NET, wenn du WebSocket neben MQTT, AMQP, STOMP, WAMP, HTTP/2 und KI/LLM-Clients aus einem Paket brauchst; wenn du eine ältere Laufzeit (.NET Framework 2.0+, .NET Core 1.0) anvisierst, die neuere Bibliotheken nicht mehr unterstützen; wenn du dieselbe API-Oberfläche in Delphi- und .NET-Projekten haben möchtest; oder wenn du speziell WebRTC-Serverbausteine (Signalling, ICE, TURN) auf .NET brauchst.

System.Net.WebSockets wählen

Wähle System.Net.WebSockets, wenn du bereits ASP.NET Core / Kestrel zum Hosten nutzt und keinerlei zusätzliche Abhängigkeiten möchtest; wenn du eine Low-Level-API möchtest, die du End-to-End kontrollierst; wenn WebSocket das einzige Protokoll ist, das du brauchst; oder wenn du dein eigenes Protokoll auf den rohen Frames aufbaust.

ASP.NET Core SignalR wählen

Wähle SignalR, wenn sowohl dein Server als auch deine Clients .NET nutzen (oder du die SignalR-Clients für JavaScript, Java oder Python verwendest); wenn du ein RPC-Programmiermodell (Hubs und Methoden) gegenüber rohen WebSocket-Frames bevorzugst; wenn du automatisches Transport-Fallback auf SSE / Long Polling für eingeschränkte Netzwerke brauchst; oder wenn du auf Azure SignalR Service skalieren willst.

WebSocket-Sharp wählen

Wähle WebSocket-Sharp, wenn du einen permissiv lizenzierten (MIT) WebSocket-Client und -Server brauchst, der auf .NET Framework 3.5 / Mono läuft, und du damit einverstanden bist, auf einen Commit-Hash zu pinnen und den Quellcode in deinen Build aufzunehmen.

Fleck wählen

Wähle Fleck, wenn du einen kleinen, MIT-lizenzierten WebSocket-Server brauchst, der ohne HTTP.SYS auskommt, auf alten Windows-Servern (7 / 2008) läuft und bei dem du dein eigenes TLS-Zertifikat bereitstellst. Geeignet für Embedded-Szenarien und kleine Dienste.

Watson WebSocket wählen

Wähle Watson WebSocket, wenn du bereits Joel Christners Watson Webserver / Watson TCP-Familie nutzt und dieselben API-Stil beibehalten möchtest. Neue Projekte sollten Watson Webserver (den aktiven Nachfolger) oder eine der anderen hier aufgeführten Bibliotheken in Betracht ziehen.

Umstieg auf sgcWebSockets .NET - was sich unterscheidet

Kurze Hinweise zu API- und Funktionsunterschieden, wenn du von einer der obigen Bibliotheken wechselst. Nicht wertend - nur die praktische Zuordnung.

Wechsel von System.Net.WebSockets

System.Net.WebSockets gives you das Wire-Protokoll; sgcWebSockets .NET adds MQTT / AMQP / STOMP / WAMP Subprotokolls, HTTP/2, Auto-Reconnect, WatchDog, the AI/LLM and Exchange-API-Clients, und die WebRTC server pieces on top. Wenn du einen geschrieben hast a dünnen Wrapper um ClientWebSocket, the migration is hauptsächlich a Umbenennen plus Portieren von Event-Handlern.

Wechsel von ASP.NET Core SignalR

SignalR speaks its own Framing-Protokoll over WebSocket. sgcWebSockets implementiert the SignalR-Client Wire-Protokoll (TsgcWSAPI_SignalR and TsgcWSAPI_SignalRCore), so a Delphi or .NET client built with sgcWebSockets can talk to an existing ASP.NET Core SignalR server. Wenn du migrierst a full SignalR back-end to raw WebSocket, expect to redesign the hub-method dispatch as dein eigenes message envelope.

Wechsel von WebSocket-Sharp

WebSocket-Sharp's WebSocket client and WebSocketServer map closely to sgcWebSockets' TsgcWebSocketClient and TsgcWebSocketServer. Event names differ (OnMessage exists in both; OnError and OnClose have similar signatures). Subprotokolls (MQTT / AMQP / STOMP / WAMP) are sgcWebSockets-only.

Wechsel von Fleck

Fleck is server-only. If your application has both a Fleck server and a separate client library, sgcWebSockets .NET unifies both. The Fleck Handler-basierte API (WebSocketServer.Start(socket => ...)) maps to sgcWebSockets' ereignisbasierte TsgcWebSocketServer with OnMessage / OnConnect handlers.

Wechsel von Watson WebSocket

The Watson client/server event surface (MessageReceived, ClientConnected, ClientDisconnected) maps cleanly to sgcWebSockets' OnMessage / OnConnect / OnDisconnect. Subprotokolls und die AI/LLM API clients are sgcWebSockets-only.

Jede Aussage mit Quelle

Jede Zelle der obigen Matrix verweist auf eine dieser offiziellen Dokumentationsseiten, Repositories oder Release Notes. Alle URLs wurden zum Zeitpunkt der Erstellung per HEAD-Check geprüft.

QuelleURL
sgcWebSockets — Produktseitehttps://www.esegece.com/products/websockets/
sgcWebSockets — .NET-Feature-Matrixhttps://www.esegece.com/products/websockets/features/feature-matrix-net/
RFC 6455 — das WebSocket-Protokollhttps://datatracker.ietf.org/doc/html/rfc6455
RFC 7692 — Compression-Erweiterungen für WebSocket (per-message-deflate)https://datatracker.ietf.org/doc/html/rfc7692
System.Net.WebSockets — Namespace-Dokumentationhttps://learn.microsoft.com/en-us/dotnet/api/system.net.websockets
ClientWebSocket — .NET-API-Referenzhttps://learn.microsoft.com/en-us/dotnet/api/system.net.websockets.clientwebsocket
WebSocketDeflateOptions — .NET-Per-Message-Deflate-Unterstützunghttps://learn.microsoft.com/en-us/dotnet/api/system.net.websockets.websocketdeflateoptions
ASP.NET Core SignalR — Übersichthttps://learn.microsoft.com/en-us/aspnet/core/signalr/introduction
SignalR-Repository (dotnet/aspnetcore)https://github.com/dotnet/aspnetcore
WebSocket-Sharp — GitHub-Repositoryhttps://github.com/sta/websocket-sharp
Fleck — GitHub-Repositoryhttps://github.com/statianzo/Fleck
Fleck — Releases (0.14.0 in 2016)https://github.com/statianzo/Fleck/releases
Watson WebSocket — GitHub-Repository (archiviert)https://github.com/jchristn/WatsonWebsocket

sgcWebSockets .NET ausprobieren

Lade die kostenlose Community-Edition herunter und vergleiche sgcWebSockets .NET in deiner eigenen Anwendung mit deiner aktuellen Bibliothek.