Bibliotecas WebSocket para .NET — guía comparativa

Un análisis neutral y con fuentes citadas de las bibliotecas WebSocket disponibles para desarrolladores .NET en 2026: sgcWebSockets .NET, System.Net.WebSockets, ASP.NET Core SignalR, WebSocket-Sharp, Fleck y Watson WebSocket. Cada afirmación sobre características enlaza con la documentación oficial del proyecto.

Seis bibliotecas entre las que elegir

Un resumen de un párrafo de cada biblioteca, con enlace a la documentación o el repositorio oficial.

System.Net.WebSockets

Microsoft · MIT (parte de .NET)

La API WebSocket de bajo nivel incluida en .NET. Ofrece ClientWebSocket para clientes y una clase abstracta WebSocket de servidor consumida por ASP.NET Core, Kestrel y HttpListener. El framing RFC 6455 y per-message-deflate (WebSocketDeflateOptions) son de primera clase.

Página oficial

ASP.NET Core SignalR

Microsoft · MIT (parte de ASP.NET Core)

El framework de alto nivel de Microsoft para tiempo real. Construido sobre WebSocket, Server-Sent Events y Long Polling (en ese orden de fallback); expone una API RPC de hub en lugar de tramas en crudo. Protocolos de hub JSON o MessagePack; escala mediante Azure SignalR Service o un backplane de Redis.

Página oficial

WebSocket-Sharp

sta.blockhead · MIT

Cliente y servidor WebSocket en C# de código abierto y larga trayectoria. Apunta a .NET Framework 3.5 y posteriores (y Mono), implementa RFC 6455 con per-message-deflate (sin context takeover). El repositorio en GitHub no tiene versiones etiquetadas: quienes lo usan suelen tomar el último master o anclar a un hash de commit.

Página oficial

Fleck

Jason Staten / comunidad · MIT

Biblioteca WebSocket solo de servidor en C# que no depende de HttpListener ni HTTP.SYS: escucha en un socket en bruto. No tiene lado cliente, ni servidor HTTP, ni terminación TLS integrada fuera de la vía del certificado X509. La última versión etiquetada es la 0.14.0, de octubre de 2016.

Página oficial

Watson WebSocket

Joel Christner · MIT

Cliente y servidor WebSocket asíncrono en C# con una API basada en eventos. Apunta a .NET Framework 4.8 y .NET 7.0. El repositorio se archivó en mayo de 2024 con una nota que indica que se ha integrado en Watson Webserver.

Página oficial

Comparativa lado a lado de características

Una marca () significa que el proyecto documenta soporte nativo. Un guion () significa que el proyecto no lo ofrece de forma nativa. Una tilde (~) significa parcial / mediante complemento / no documentado explícitamente; consulta la sección Fuentes para ver lo que pudimos verificar.

Protocolos, transporte, licencias

16 filas
Feature sgcWebSockets .NET System.Net.WebSockets ASP.NET Core SignalR WebSocket-Sharp Fleck Watson WebSocket
Cliente WebSocket Cliente RFC 6455
Servidor WebSocket Servidor RFC 6455
TLS 1.3 El transporte proporcionado admite TLS 1.3 ~ ~
Cliente HTTP/2 Cliente HTTP/2 nativo (RFC 7540 / 9113) ~
MQTT Cliente MQTT 3.1.1 / 5.0 incorporado
AMQP Cliente AMQP 0.9.1 / 1.0 incorporado
STOMP Cliente STOMP 1.0 / 1.2 incorporado
WAMP Cliente WAMP v1 / v2 incorporado
Server push / streaming Conexión push o streaming de larga duración
Reconexión automática Reconexión automática / watchdog del cliente incorporados
per-message-deflate (RFC 7692) Extensión de compresión de WebSocket ~ ~
Multiplataforma Win / macOS / Linux / iOS / Android ~
Uso comercial permitido La licencia permite uso comercial de código cerrado
Código fuente disponible El código fuente de la biblioteca está disponible para la persona desarrolladora
Mantenimiento activo Lanzamientos o actividad etiquetada en los últimos 12–18 meses ~
Modelo de licencia Tipo de licencia Comercial MIT (parte de .NET) MIT (parte de ASP.NET Core) MIT MIT MIT
Soporte nativo documentado No se ofrece de forma nativa ~ Parcial / mediante complemento / sin verificar

Encaje honesto de cada biblioteca

Cada biblioteca aquí tiene un público real. La elección correcta depende de tus runtimes de destino, el abanico de protocolos que necesites y si quieres una API tipo RPC con hubs o tramas WebSocket en crudo.

Elige sgcWebSockets .NET

Elige sgcWebSockets .NET cuando necesites WebSocket junto con MQTT, AMQP, STOMP, WAMP, HTTP/2 y clientes de IA/LLM en un solo paquete; cuando apuntes a un runtime más antiguo (.NET Framework 2.0+, .NET Core 1.0) que otras bibliotecas más nuevas han abandonado; cuando quieras la misma superficie de API en proyectos Delphi y .NET; o cuando necesites específicamente piezas de servidor WebRTC (señalización, ICE, TURN) en .NET.

Elige System.Net.WebSockets

Elige System.Net.WebSockets cuando ya uses ASP.NET Core / Kestrel para el hosting y quieras cero dependencias extra; cuando quieras una API de bajo nivel que controles de principio a fin; cuando WebSocket sea el único protocolo que necesitas; o cuando estés construyendo tu propio protocolo sobre las tramas en crudo.

Elige ASP.NET Core SignalR

Elige SignalR cuando tanto tu servidor como tus clientes sean .NET (o uses los clientes SignalR de JavaScript / Java / Python), cuando prefieras un modelo de programación RPC (hubs y métodos) frente a tramas WebSocket en crudo, cuando necesites fallback automático de transporte a SSE / Long Polling para redes restrictivas, o cuando vayas a escalar con Azure SignalR Service.

Elige WebSocket-Sharp

Elige WebSocket-Sharp cuando necesites un cliente y servidor WebSocket con licencia permisiva (MIT) que se ejecute en objetivos .NET Framework 3.5 / Mono, y te resulte aceptable anclar a un hash de commit e incluir el código fuente en tu build.

Elige Fleck

Elige Fleck cuando necesites un servidor WebSocket pequeño con licencia MIT que no requiera HTTP.SYS, que se ejecute en servidores Windows antiguos (7 / 2008) y donde proporciones tu propio certificado TLS. Adecuado para escenarios embebidos y servicios pequeños.

Elige Watson WebSocket

Elige Watson WebSocket cuando ya uses la familia Watson Webserver / Watson TCP de Joel Christner y quieras mantener el estilo de API coincidente. Los proyectos nuevos deberían considerar Watson Webserver (el sucesor activo) o alguna de las otras bibliotecas de esta página.

Migrar a sgcWebSockets .NET — qué cambia

Notas breves sobre las diferencias de API y características si vienes de una de las bibliotecas anteriores. Sin ánimo de enfrentar; solo la correspondencia práctica.

Migrar desde System.Net.WebSockets

System.Net.WebSockets te ofrece el protocolo en sí; sgcWebSockets .NET añade encima subprotocolos MQTT / AMQP / STOMP / WAMP, HTTP/2, reconexión automática, watchdog, los clientes de IA/LLM y APIs de exchanges, y las piezas de servidor WebRTC. Si escribiste un wrapper fino sobre ClientWebSocket, la migración es principalmente cambiar nombres y portar los handlers de eventos.

Migrar desde ASP.NET Core SignalR

SignalR habla su propio protocolo de framing sobre WebSocket. sgcWebSockets implementa el protocolo cliente de SignalR (TsgcWSAPI_SignalR y TsgcWSAPI_SignalRCore), así que un cliente Delphi o .NET creado con sgcWebSockets puede hablar con un servidor ASP.NET Core SignalR existente. Si migras un backend SignalR completo a WebSocket en crudo, prepárate para rediseñar el dispatch de los métodos de hub como tu propio envoltorio de mensajes.

Migrar desde WebSocket-Sharp

El cliente WebSocket y el WebSocketServer de WebSocket-Sharp se corresponden estrechamente con TsgcWebSocketClient y TsgcWebSocketServer de sgcWebSockets. Los nombres de evento difieren (OnMessage existe en ambos; OnError y OnClose tienen firmas similares). Los subprotocolos (MQTT / AMQP / STOMP / WAMP) son exclusivos de sgcWebSockets.

Migrar desde Fleck

Fleck es solo de servidor. Si tu aplicación tiene tanto un servidor Fleck como una biblioteca cliente aparte, sgcWebSockets .NET unifica ambas. La API basada en handlers de Fleck (WebSocketServer.Start(socket => ...)) se corresponde con el TsgcWebSocketServer de sgcWebSockets, basado en eventos con handlers OnMessage / OnConnect.

Migrar desde Watson WebSocket

La superficie de eventos de cliente/servidor de Watson (MessageReceived, ClientConnected, ClientDisconnected) se corresponde limpiamente con OnMessage / OnConnect / OnDisconnect de sgcWebSockets. Los subprotocolos y los clientes de APIs de IA/LLM son exclusivos de sgcWebSockets.

Cada afirmación, con enlace

Cada celda de la matriz anterior remite a una de estas páginas oficiales de documentación, repositorios o notas de versión. Todas las URL se comprobaron con HEAD en el momento de la redacción.

FuenteURL
sgcWebSockets — página del productohttps://www.esegece.com/products/websockets/
sgcWebSockets — matriz de características .NEThttps://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 documentationhttps://learn.microsoft.com/en-us/dotnet/api/system.net.websockets
ClientWebSocket — .NET API referencehttps://learn.microsoft.com/en-us/dotnet/api/system.net.websockets.clientwebsocket
WebSocketDeflateOptions — .NET per-message-deflate supporthttps://learn.microsoft.com/en-us/dotnet/api/system.net.websockets.websocketdeflateoptions
ASP.NET Core SignalR — overviewhttps://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 (archived)https://github.com/jchristn/WatsonWebsocket

Prueba sgcWebSockets .NET

Descarga la edición Community gratuita y compara el rendimiento de sgcWebSockets .NET con tu biblioteca actual en tu propia aplicación.