Bibliotecas WebSocket para .NET — guia de comparação

Um levantamento neutro, com fontes citadas, das bibliotecas WebSocket disponíveis para desenvolvedores .NET em 2026: sgcWebSockets .NET, System.Net.WebSockets, ASP.NET Core SignalR, WebSocket-Sharp, Fleck e Watson WebSocket. Cada afirmação sobre recursos liga à própria documentação do projeto.

Seis bibliotecas para escolher

Um resumo de um parágrafo sobre cada biblioteca, com um link para a documentação ou repositório oficial.

System.Net.WebSockets

Microsoft · MIT (parte do .NET)

A API WebSocket de baixo nível embutida no próprio .NET. Fornece ClientWebSocket para clientes e uma classe abstrata WebSocket de servidor consumida por ASP.NET Core, Kestrel e HttpListener. O framing do RFC 6455 e o per-message-deflate (WebSocketDeflateOptions) são de primeira classe.

Página oficial

ASP.NET Core SignalR

Microsoft · MIT (parte do ASP.NET Core)

O framework de tempo real de alto nível da Microsoft. Construído sobre WebSocket, Server-Sent Events e Long Polling (nessa ordem de fallback); expõe uma API RPC de hub em vez de frames brutos. Protocolos de hub em JSON ou MessagePack; escala via Azure SignalR Service ou um backplane Redis.

Página oficial

WebSocket-Sharp

sta.blockhead · MIT

Cliente e servidor WebSocket em C# open source de longa data. Tem como alvo .NET Framework 3.5 e posteriores (e Mono), implementa o RFC 6455 com per-message-deflate (sem context takeover). O repositório no GitHub não tem releases marcadas — usuários geralmente pegam o master mais recente ou fixam em um commit hash.

Página oficial

Fleck

Jason Staten / comunidade · MIT

Biblioteca WebSocket em C# apenas de servidor que não depende de HttpListener ou HTTP.SYS — escuta em um socket bruto. Não tem lado cliente, nem servidor HTTP, nem terminação TLS integrada fora do caminho do certificado X509. A release marcada mais recente é a 0.14.0, de outubro de 2016.

Página oficial

Watson WebSocket

Joel Christner · MIT

Cliente e servidor WebSocket assíncrono em C# com uma API orientada a eventos. Tem como alvo .NET Framework 4.8 e .NET 7.0. O repositório foi arquivado em maio de 2024 com uma nota informando que foi integrado ao Watson Webserver.

Página oficial

Comparação de recursos lado a lado

Um check () significa que o projeto documenta suporte nativo. Um traço () significa que o projeto não oferece o recurso nativamente. Um til (~) significa parcial / via add-on / não documentado explicitamente — veja a seção Fontes para o que foi possível verificar.

Protocolos, transporte, licenciamento

16 linhas
Recurso 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 TLS 1.3 suportado pelo transporte fornecido ~ ~
Cliente HTTP/2 Cliente HTTP/2 nativo (RFC 7540 / 9113) ~
MQTT Cliente MQTT 3.1.1 / 5.0 integrado
AMQP Cliente AMQP 0.9.1 / 1.0 integrado
STOMP Cliente STOMP 1.0 / 1.2 integrado
WAMP Cliente WAMP v1 / v2 integrado
Push de servidor / streaming Conexão push ou streaming de longa duração
Reconexão automática Reconexão automática / watchdog integrado no cliente
per-message-deflate (RFC 7692) Extensão de compressão do WebSocket ~ ~
Multiplataforma Win / macOS / Linux / iOS / Android ~
Uso comercial permitido Licença permite uso comercial com código fechado
Código-fonte disponível Código-fonte da biblioteca é visível ao desenvolvedor
Manutenção ativa Release ou atividade marcada nos últimos 12–18 meses ~
Modelo de licença Tipo de licença Comercial MIT (parte do .NET) MIT (parte do ASP.NET Core) MIT MIT MIT
Suporte nativo documentado Não fornecido nativamente ~ Parcial / via add-on / não verificado

Mudando para o sgcWebSockets .NET — o que difere

Notas curtas sobre as diferenças de API e de recursos caso você esteja migrando de uma das bibliotecas acima. Sem adversidade — apenas o mapeamento prático.

Migrando de System.Net.WebSockets

O System.Net.WebSockets te dá o protocolo de fio; o sgcWebSockets .NET adiciona sub-protocolos MQTT / AMQP / STOMP / WAMP, HTTP/2, reconexão automática, watchdog, os clientes de IA/LLM e APIs de exchange e as peças de servidor WebRTC por cima. Se você escreveu um wrapper fino em torno de ClientWebSocket, a migração é principalmente um rename mais o porting dos event handlers.

Migrando de ASP.NET Core SignalR

O SignalR fala o seu próprio protocolo de framing sobre WebSocket. O sgcWebSockets implementa o protocolo de fio do cliente SignalR (TsgcWSAPI_SignalR e TsgcWSAPI_SignalRCore), então um cliente Delphi ou .NET feito com sgcWebSockets pode conversar com um servidor ASP.NET Core SignalR já existente. Se você está migrando um back-end SignalR completo para WebSocket bruto, espere redesenhar o despacho de métodos de hub como o seu próprio envelope de mensagem.

Migrando de WebSocket-Sharp

O cliente WebSocket e o WebSocketServer do WebSocket-Sharp se mapeiam diretamente para TsgcWebSocketClient e TsgcWebSocketServer do sgcWebSockets. Os nomes dos eventos diferem (OnMessage existe em ambos; OnError e OnClose têm assinaturas similares). Sub-protocolos (MQTT / AMQP / STOMP / WAMP) só existem no sgcWebSockets.

Migrando de Fleck

O Fleck é apenas de servidor. Se a sua aplicação tem tanto um servidor Fleck quanto uma biblioteca cliente separada, o sgcWebSockets .NET unifica ambos. A API baseada em handler do Fleck (WebSocketServer.Start(socket => ...)) se mapeia para o TsgcWebSocketServer baseado em eventos do sgcWebSockets com handlers OnMessage / OnConnect.

Migrando de Watson WebSocket

A superfície de eventos do cliente/servidor Watson (MessageReceived, ClientConnected, ClientDisconnected) se mapeia de forma limpa para OnMessage / OnConnect / OnDisconnect do sgcWebSockets. Sub-protocolos e os clientes de API de IA/LLM só existem no sgcWebSockets.

Cada célula da matriz acima remete a uma destas páginas oficiais de documentação, repositórios ou notas de release. Todas as URLs passaram por HEAD-check no momento da escrita.

FonteURL
sgcWebSockets — página do produtohttps://www.esegece.com/products/websockets/
sgcWebSockets — matriz de recursos .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 — documentação do namespacehttps://learn.microsoft.com/en-us/dotnet/api/system.net.websockets
ClientWebSocket — referência de API .NEThttps://learn.microsoft.com/en-us/dotnet/api/system.net.websockets.clientwebsocket
WebSocketDeflateOptions — suporte a per-message-deflate em .NEThttps://learn.microsoft.com/en-us/dotnet/api/system.net.websockets.websocketdeflateoptions
ASP.NET Core SignalR — visão geralhttps://learn.microsoft.com/en-us/aspnet/core/signalr/introduction
Repositório do SignalR (dotnet/aspnetcore)https://github.com/dotnet/aspnetcore
WebSocket-Sharp — repositório no GitHubhttps://github.com/sta/websocket-sharp
Fleck — repositório no GitHubhttps://github.com/statianzo/Fleck
Fleck — releases (0.14.0 em 2016)https://github.com/statianzo/Fleck/releases
Watson WebSocket — repositório no GitHub (arquivado)https://github.com/jchristn/WatsonWebsocket

Experimente o sgcWebSockets .NET

Baixe a edição Community gratuita e compare o sgcWebSockets .NET com a sua biblioteca atual em sua própria aplicação.