Biblioteca WebSocket C# (.NET): SignalR e ferramentas alternativas para tempo real
No desenvolvimento web moderno, a necessidade de comunicação bidirecional em tempo real tornou-se padrão. Aplicativos de chat, jogos online, plataformas de negociação, monitoramento de servidores — tudo isso exige transmissão instantânea de dados. Para a linguagem C# (.NET), existem várias bibliotecas poderosas que implementam o protocolo WebSocket. Neste artigo, vamos detalhar o SignalR — a biblioteca flagship da Microsoft, e também considerar alternativas: WebSocketSharp e Fleck. Você aprenderá como escolher a ferramenta adequada e como começar rapidamente.
O que é WebSocket e por que é necessário em C#
WebSocket é um protocolo que fornece comunicação full-duplex entre cliente e servidor através de uma única conexão TCP de longa duração. Ao contrário do HTTP, onde o cliente envia uma requisição e aguarda a resposta, o WebSocket permite que o servidor inicie o envio de dados a qualquer momento. Para a plataforma .NET, isso é especialmente importante, pois C# é tradicionalmente forte no desenvolvimento server-side, e o WebSocket expande suas possibilidades para cenários em tempo real.
SignalR — a solução oficial da Microsoft
SignalR é uma biblioteca para ASP.NET Core que abstrai o trabalho com WebSocket, fornecendo uma API de alto nível. Ela seleciona automaticamente o melhor transporte: WebSocket, Server-Sent Events (SSE) ou Long Polling. O SignalR é ideal para projetos enterprise onde a escalabilidade e a integração com o ecossistema .NET são importantes.
Instalação do SignalR
dotnet add package Microsoft.AspNetCore.SignalRExemplo de um chat simples com SignalR
Vamos criar um Hub — a classe central para gerenciar conexões:
using Microsoft.AspNetCore.SignalR;
public class ChatHub : Hub{ public async Task SendMessage(string user, string message) { await Clients.All.SendAsync("ReceiveMessage", user, message); }}Configuração no Program.cs:
var builder = WebApplication.CreateBuilder(args);builder.Services.AddSignalR();
var app = builder.Build();app.MapHub<ChatHub>("/chat");
app.Run();Cliente em JavaScript:
const connection = new signalR.HubConnectionBuilder() .withUrl("/chat") .build();
connection.on("ReceiveMessage", (user, message) => { console.log(`${user}: ${message}`);});
connection.start().catch(err => console.error(err));Vantagens do SignalR:
- Seleção automática de transporte (WebSocket, SSE, Long Polling)
- Suporte para transmissões em grupo e usuários individuais
- Tratamento embutido de reconexão em caso de desconexão
- Integração com autenticação ASP.NET Core Identity
- Escalabilidade via Redis Backplane ou Azure SignalR Service
Desvantagens:
- Pesado para projetos simples
- Dependência do ASP.NET Core (não funciona em aplicações console)
- Complexidade na configuração em cenários não padronizados
WebSocketSharp — biblioteca leve para .NET Framework e .NET Core
WebSocketSharp é uma biblioteca minimalista que implementa o protocolo WebSocket sem abstrações desnecessárias. Ela é adequada para criar conexões WebSocket tanto no lado servidor quanto no cliente. Ideal para incorporar em aplicações console ou jogos Unity.
Instalação via NuGet
dotnet add package WebSocketSharpExemplo de servidor WebSocket
using WebSocketSharp;using WebSocketSharp.Server;
public class Echo : WebSocketBehavior{ protected override void OnMessage(MessageEventArgs e) { Send($"Eco: {e.Data}"); }}
class Program{ static void Main() { va
``` Também na biblioteca
Validação de dados em Swift: biblioteca Validator
Processamento de imagens em Kotlin: resize e crop com a biblioteca Kamel
ORM para Go (Golang): comparação e exemplos de bibliotecas populares
Trabalhando com S3 e armazenamentos em nuvem em Kotlin: AWS SDK e MinIO
Parsing de HTML em C++: bibliotecas e exemplos para trabalhar com DOM e XPath