Bibliothèques WebSocket .NET — guide de comparaison

Un tour d'horizon neutre, avec sources citées, des bibliothèques WebSocket disponibles pour les développeurs .NET en 2026 : sgcWebSockets .NET, System.Net.WebSockets, ASP.NET Core SignalR, WebSocket-Sharp, Fleck et Watson WebSocket. Chaque affirmation sur une fonctionnalité renvoie à la documentation officielle du projet.

Six bibliothèques au choix

Un résumé d'un paragraphe pour chaque bibliothèque, avec un lien vers la documentation officielle ou le dépôt.

System.Net.WebSockets

Microsoft · MIT (partie de .NET)

L'API WebSocket de bas niveau intégrée directement dans .NET. Elle fournit ClientWebSocket pour les clients et une classe serveur abstraite WebSocket consommée par ASP.NET Core, Kestrel et HttpListener. Le framing RFC 6455 et per-message-deflate (WebSocketDeflateOptions) sont gérés nativement.

Page officielle

ASP.NET Core SignalR

Microsoft · MIT (partie d'ASP.NET Core)

Le framework temps réel de haut niveau de Microsoft. Construit par-dessus WebSocket, Server-Sent Events et Long Polling (dans cet ordre de repli) ; expose une API RPC de type hub plutôt que des trames brutes. Protocoles de hub JSON ou MessagePack ; passe à l'échelle via Azure SignalR Service ou un backplane Redis.

Page officielle

WebSocket-Sharp

sta.blockhead · MIT

Client et serveur WebSocket C# open source ancien. Cible .NET Framework 3.5 et ultérieur (ainsi que Mono), implémente RFC 6455 avec per-message-deflate (sans context takeover). Le dépôt GitHub n'a pas de releases taguées — les utilisateurs prennent généralement le dernier master ou figent un commit hash.

Page officielle

Fleck

Jason Staten / communauté · MIT

Bibliothèque WebSocket C# côté serveur uniquement, qui ne dépend ni de HttpListener ni de HTTP.SYS — elle écoute sur un socket brut. Pas de côté client, pas de serveur HTTP, et pas de terminaison TLS intégrée en dehors du chemin de certificat X509. La dernière release taguée est 0.14.0 datant d'octobre 2016.

Page officielle

Watson WebSocket

Joel Christner · MIT

Client et serveur WebSocket C# asynchrones avec une API basée sur les événements. Cible .NET Framework 4.8 et .NET 7.0. Le dépôt a été archivé en mai 2024 avec une note indiquant qu'il a été intégré à Watson Webserver.

Page officielle

Comparaison côte à côte des fonctionnalités

Un point () signifie que le projet documente un support natif. Un tiret () signifie que le projet ne le fournit pas nativement. Un tilde (~) signifie partiel / via un add-on / non explicitement documenté — consulte la section Sources pour ce que nous avons pu vérifier.

Protocoles, transport, licence

16 lignes
Fonctionnalité sgcWebSockets .NET System.Net.WebSockets ASP.NET Core SignalR WebSocket-Sharp Fleck Watson WebSocket
Client WebSocket Client RFC 6455
Serveur WebSocket Serveur RFC 6455
TLS 1.3 TLS 1.3 pris en charge par le transport fourni ~ ~
Client HTTP/2 Client HTTP/2 natif (RFC 7540 / 9113) ~
MQTT Client MQTT 3.1.1 / 5.0 intégré
AMQP Client AMQP 0.9.1 / 1.0 intégré
STOMP Client STOMP 1.0 / 1.2 intégré
WAMP Client WAMP v1 / v2 intégré
Push serveur / streaming Connexion push ou streaming longue durée
Reconnexion automatique Reconnexion automatique / watchdog client intégrés
per-message-deflate (RFC 7692) Extension de compression WebSocket ~ ~
Multiplateforme Win / macOS / Linux / iOS / Android ~
Usage commercial autorisé La licence autorise un usage commercial à code source fermé
Code source disponible Le code source de la bibliothèque est visible pour le développeur
Maintenance active Release ou activité taguée au cours des 12 à 18 derniers mois ~
Modèle de licence Type de licence Commercial MIT (partie de .NET) MIT (partie d'ASP.NET Core) MIT MIT MIT
Support natif documenté Non fourni nativement ~ Partiel / via un add-on / non vérifié

Passer à sgcWebSockets .NET — ce qui diffère

Notes courtes sur les différences d'API et de fonctionnalités si tu passes depuis une des bibliothèques ci-dessus. Pas d'esprit antagoniste — juste un mappage pratique.

Migrer depuis System.Net.WebSockets

System.Net.WebSockets te donne le protocole sur le fil ; sgcWebSockets .NET ajoute par-dessus les sous-protocoles MQTT / AMQP / STOMP / WAMP, HTTP/2, la reconnexion automatique, le watchdog, les clients IA/LLM et d'API d'échanges, et les composants serveur WebRTC. Si tu as écrit une fine couche autour de ClientWebSocket, la migration consiste essentiellement à renommer et à porter les gestionnaires d'événements.

Migrer depuis ASP.NET Core SignalR

SignalR parle son propre protocole de framing par-dessus WebSocket. sgcWebSockets implémente le protocole client SignalR sur le fil (TsgcWSAPI_SignalR et TsgcWSAPI_SignalRCore), donc un client Delphi ou .NET construit avec sgcWebSockets peut dialoguer avec un serveur ASP.NET Core SignalR existant. Si tu migres un back-end SignalR complet vers du WebSocket brut, attends-toi à redéfinir la dispatch des méthodes de hub sous forme de ton propre enveloppe de message.

Migrer depuis WebSocket-Sharp

Le client WebSocket et le WebSocketServer de WebSocket-Sharp correspondent étroitement à TsgcWebSocketClient et TsgcWebSocketServer de sgcWebSockets. Les noms d'événements diffèrent (OnMessage existe dans les deux ; OnError et OnClose ont des signatures similaires). Les sous-protocoles (MQTT / AMQP / STOMP / WAMP) sont propres à sgcWebSockets.

Migrer depuis Fleck

Fleck est côté serveur uniquement. Si ton application a à la fois un serveur Fleck et une bibliothèque client séparée, sgcWebSockets .NET unifie les deux. L'API basée sur des handlers de Fleck (WebSocketServer.Start(socket => ...)) correspond au TsgcWebSocketServer basé sur les événements de sgcWebSockets avec les gestionnaires OnMessage / OnConnect.

Migrer depuis Watson WebSocket

La surface d'événements client/serveur de Watson (MessageReceived, ClientConnected, ClientDisconnected) correspond proprement à OnMessage / OnConnect / OnDisconnect de sgcWebSockets. Les sous-protocoles et les clients d'API IA/LLM sont propres à sgcWebSockets.

Chaque affirmation, sourcée

Chaque cellule de la matrice ci-dessus renvoie à l'une de ces pages de documentation officielles, dépôts ou notes de version. Toutes les URL ont été vérifiées par HEAD au moment de la rédaction.

SourceURL
sgcWebSockets — page produithttps://www.esegece.com/products/websockets/
sgcWebSockets — matrice de fonctionnalités .NEThttps://www.esegece.com/products/websockets/features/feature-matrix-net/
RFC 6455 — Le protocole WebSockethttps://datatracker.ietf.org/doc/html/rfc6455
RFC 7692 — Extensions de compression pour WebSocket (per-message-deflate)https://datatracker.ietf.org/doc/html/rfc7692
System.Net.WebSockets — documentation du namespacehttps://learn.microsoft.com/en-us/dotnet/api/system.net.websockets
ClientWebSocket — référence API .NEThttps://learn.microsoft.com/en-us/dotnet/api/system.net.websockets.clientwebsocket
WebSocketDeflateOptions — support per-message-deflate sous .NEThttps://learn.microsoft.com/en-us/dotnet/api/system.net.websockets.websocketdeflateoptions
ASP.NET Core SignalR — aperçuhttps://learn.microsoft.com/en-us/aspnet/core/signalr/introduction
Dépôt SignalR (dotnet/aspnetcore)https://github.com/dotnet/aspnetcore
WebSocket-Sharp — dépôt GitHubhttps://github.com/sta/websocket-sharp
Fleck — dépôt GitHubhttps://github.com/statianzo/Fleck
Fleck — releases (0.14.0 en 2016)https://github.com/statianzo/Fleck/releases
Watson WebSocket — dépôt GitHub (archivé)https://github.com/jchristn/WatsonWebsocket

Essaye sgcWebSockets .NET

Télécharge l'édition Community gratuite et compare les performances de sgcWebSockets .NET avec ta bibliothèque actuelle sur ta propre application.