.NET WebSocket-bibliotheken — vergelijkingsgids

Een neutrale, met bronnen onderbouwde vergelijking van de WebSocket-bibliotheken die in 2026 beschikbaar zijn voor .NET-ontwikkelaars: sgcWebSockets .NET, System.Net.WebSockets, ASP.NET Core SignalR, WebSocket-Sharp, Fleck en Watson WebSocket. Elke functieclaim verwijst naar de eigen documentatie van het project.

Zes bibliotheken om uit te kiezen

Eén alinea per bibliotheek, met een link naar de officiële documentatie of repository.

System.Net.WebSockets

Microsoft · MIT (onderdeel van .NET)

De laag-bij-de-grond WebSocket-API die in .NET zelf is ingebouwd. Biedt ClientWebSocket voor clients en een abstracte WebSocket-klasse aan de serverkant die door ASP.NET Core, Kestrel en HttpListener gebruikt wordt. RFC 6455-framing en per-message-deflate (WebSocketDeflateOptions) zijn eersteklas burgers.

Officiële pagina

ASP.NET Core SignalR

Microsoft · MIT (onderdeel van ASP.NET Core)

Het hoog-niveau realtime-framework van Microsoft. Gebouwd bovenop WebSocket, Server-Sent Events en Long Polling (in die fall-back-volgorde); biedt een hub-RPC-API in plaats van ruwe frames. JSON- of MessagePack-hub-protocollen; schaalt via Azure SignalR Service of een Redis-backplane.

Officiële pagina

WebSocket-Sharp

sta.blockhead · MIT

Al lang bestaande open-source C# WebSocket-client en -server. Ondersteunt .NET Framework 3.5 en later (en Mono), implementeert RFC 6455 met per-message-deflate (geen context takeover). De GitHub-repository heeft geen tagged releases — gebruikers pakken meestal de laatste master of pinnen aan een commit-hash.

Officiële pagina

Fleck

Jason Staten / community · MIT

Server-only C# WebSocket-bibliotheek die niet afhankelijk is van HttpListener of HTTP.SYS — ze luistert op een raw socket. Heeft geen client-zijde, geen HTTP-server, en geen ingebouwde TLS-terminatie buiten het X509-certificaatpad. De meest recente tagged release is 0.14.0 uit oktober 2016.

Officiële pagina

Watson WebSocket

Joel Christner · MIT

Async C# WebSocket-client en -server met een event-driven API. Ondersteunt .NET Framework 4.8 en .NET 7.0. De repository is in mei 2024 gearchiveerd, met een notitie dat de code is geïntegreerd in Watson Webserver.

Officiële pagina

Functievergelijking naast elkaar

Een vinkje () betekent dat het project native ondersteuning documenteert. Een streepje () betekent dat het project dit niet native biedt. Een tilde (~) betekent gedeeltelijk / via add-on / niet expliciet gedocumenteerd — zie de Bronnen-sectie voor wat we konden verifiëren.

Protocollen, transport, licentie

16 rijen
Functie 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 ondersteund door het meegeleverde transport ~ ~
HTTP/2-client Native HTTP/2-client (RFC 7540 / 9113) ~
MQTT MQTT 3.1.1 / 5.0-client ingebouwd
AMQP AMQP 0.9.1 / 1.0-client ingebouwd
STOMP STOMP 1.0 / 1.2-client ingebouwd
WAMP WAMP v1 / v2-client ingebouwd
Server push / streaming Langlopende push- of streaming-verbinding
Auto-reconnect Ingebouwde client auto-reconnect / watchdog
per-message-deflate (RFC 7692) WebSocket-compressie-extensie ~ ~
Multi-platform Win / macOS / Linux / iOS / Android ~
Commercieel gebruik toegestaan Licentie staat commercieel gebruik met gesloten broncode toe
Broncode beschikbaar De broncode van de bibliotheek is zichtbaar voor de ontwikkelaar
Actief onderhoud Release of getagde activiteit in de laatste 12–18 maanden ~
Licentiemodel Licentietype Commercieel MIT (onderdeel van .NET) MIT (onderdeel van ASP.NET Core) MIT MIT MIT
Gedocumenteerde native ondersteuning Niet native geleverd ~ Gedeeltelijk / via add-on / niet geverifieerd

Eerlijke match per bibliotheek

Elke bibliotheek hier heeft een eigen publiek. De juiste keuze hangt af van je runtime-doelen, je protocolbreedte en of je een RPC-style hub-API wilt of ruwe WebSocket-frames.

Kies sgcWebSockets .NET

Kies sgcWebSockets .NET als je WebSocket naast MQTT, AMQP, STOMP, WAMP, HTTP/2 en AI/LLM-clients uit één pakket nodig hebt; als je richt op een oudere runtime (.NET Framework 2.0+, .NET Core 1.0) die nieuwere bibliotheken hebben laten vallen; als je hetzelfde API-oppervlak wilt in zowel Delphi- als .NET-projecten; of als je specifiek WebRTC-serveronderdelen (signalling, ICE, TURN) op .NET nodig hebt.

Kies System.Net.WebSockets

Kies System.Net.WebSockets als je al ASP.NET Core / Kestrel voor hosting gebruikt en geen extra dependencies wilt; als je een laag-bij-de-grond API wilt die je volledig zelf beheert; als WebSocket het enige protocol is dat je nodig hebt; of als je je eigen protocol bouwt bovenop de kale frames.

Kies ASP.NET Core SignalR

Kies SignalR als zowel je server als je clients .NET zijn (of als je de JavaScript / Java / Python SignalR-clients gebruikt), als je een RPC-programmeermodel (hubs en methodes) verkiest boven ruwe WebSocket-frames, als je automatische transport-fallback naar SSE / Long Polling nodig hebt voor beperkte netwerken, of als je van plan bent te schalen via Azure SignalR Service.

Kies WebSocket-Sharp

Kies WebSocket-Sharp als je een permissief gelicenseerde (MIT) WebSocket-client en -server nodig hebt die draait op .NET Framework 3.5 / Mono-doelen, en je het prima vindt om aan een commit-hash te pinnen en de broncode in je build mee te nemen.

Kies Fleck

Kies Fleck als je een kleine, MIT-gelicenseerde WebSocket-server nodig hebt die geen HTTP.SYS vereist, die op legacy Windows-servers (7 / 2008) draait en waar je je eigen TLS-certificaat aanlevert. Geschikt voor embedded scenario's en kleine services.

Kies Watson WebSocket

Kies Watson WebSocket als je al de Watson Webserver / Watson TCP-familie van Joel Christner gebruikt en de passende API-stijl wilt behouden. Nieuwe projecten kunnen beter Watson Webserver (de actieve opvolger) of een van de andere bibliotheken op deze pagina overwegen.

Overstappen naar sgcWebSockets .NET — wat verschilt

Korte notities over de API- en functieverschillen als je overstapt vanaf een van de bovenstaande bibliotheken. Niet polemisch — gewoon de praktische mapping.

Overstappen vanaf System.Net.WebSockets

System.Net.WebSockets geeft je het wire-protocol; sgcWebSockets .NET voegt daar MQTT / AMQP / STOMP / WAMP-subprotocollen, HTTP/2, auto-reconnect, watchdog, de AI/LLM- en exchange-API-clients en de WebRTC-serveronderdelen aan toe. Als je een dun wrappertje rond ClientWebSocket hebt geschreven, is de migratie vooral een rename plus het porten van event-handlers.

Overstappen vanaf ASP.NET Core SignalR

SignalR spreekt zijn eigen framing-protocol over WebSocket. sgcWebSockets implementeert het SignalR-client-wire-protocol (TsgcWSAPI_SignalR en TsgcWSAPI_SignalRCore), dus een Delphi- of .NET-client gebouwd met sgcWebSockets kan met een bestaande ASP.NET Core SignalR-server praten. Als je een complete SignalR-backend naar ruwe WebSocket migreert, moet je rekenen op het herontwerpen van de hub-methode-dispatch als je eigen berichten-envelope.

Overstappen vanaf WebSocket-Sharp

De WebSocket-client en WebSocketServer van WebSocket-Sharp komen sterk overeen met TsgcWebSocketClient en TsgcWebSocketServer van sgcWebSockets. Event-namen verschillen (OnMessage bestaat in beide; OnError en OnClose hebben vergelijkbare signatures). Subprotocollen (MQTT / AMQP / STOMP / WAMP) zijn alleen in sgcWebSockets te vinden.

Overstappen vanaf Fleck

Fleck is alleen-server. Als je applicatie zowel een Fleck-server als een aparte clientbibliotheek heeft, brengt sgcWebSockets .NET beide samen. De handler-gebaseerde API van Fleck (WebSocketServer.Start(socket => ...)) mapt naar de event-gebaseerde TsgcWebSocketServer van sgcWebSockets met OnMessage / OnConnect-handlers.

Overstappen vanaf Watson WebSocket

Het event-oppervlak van Watson client/server (MessageReceived, ClientConnected, ClientDisconnected) mapt netjes naar OnMessage / OnConnect / OnDisconnect van sgcWebSockets. Subprotocollen en de AI/LLM-API-clients zijn alleen in sgcWebSockets aanwezig.

Elke cel in de bovenstaande matrix is herleidbaar naar een van deze officiële documentatiepagina's, repositories of release notes. Alle URL's zijn op het moment van schrijven via HEAD gecontroleerd.

BronURL
sgcWebSockets — productpaginahttps://www.esegece.com/products/websockets/
sgcWebSockets — .NET-functiematrixhttps://www.esegece.com/products/websockets/features/feature-matrix-net/
RFC 6455 — The WebSocket Protocolhttps://datatracker.ietf.org/doc/html/rfc6455
RFC 7692 — Compression Extensions for WebSocket (per-message-deflate)https://datatracker.ietf.org/doc/html/rfc7692
System.Net.WebSockets — namespace-documentatiehttps://learn.microsoft.com/en-us/dotnet/api/system.net.websockets
ClientWebSocket — .NET API-referentiehttps://learn.microsoft.com/en-us/dotnet/api/system.net.websockets.clientwebsocket
WebSocketDeflateOptions — .NET per-message-deflate-ondersteuninghttps://learn.microsoft.com/en-us/dotnet/api/system.net.websockets.websocketdeflateoptions
ASP.NET Core SignalR — overzichthttps://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 (gearchiveerd)https://github.com/jchristn/WatsonWebsocket

Probeer sgcWebSockets .NET

Download de gratis Community-editie en benchmark sgcWebSockets .NET tegen je huidige bibliotheek op je eigen toepassing.