Biblioteca WebSocket para C# (.NET): SignalR e alternativas

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course
```html

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.SignalR


Exemplo 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 WebSocketSharp


Exemplo 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 ```

Recommendations