Biblioteca WebSocket C# (.NET): SignalR y herramientas alternativas para tiempo real
En el desarrollo web moderno, la necesidad de comunicación bidireccional en tiempo real se ha convertido en un estándar. Aplicaciones de chat, juegos en línea, plataformas de trading, monitoreo de servidores — todo esto requiere transmisión instantánea de datos. Para el lenguaje C# (.NET) existen varias bibliotecas potentes que implementan el protocolo WebSocket. En este artículo analizaremos en detalle SignalR — la biblioteca insignia de Microsoft, y también consideraremos alternativas: WebSocketSharp y Fleck. Aprenderá cómo elegir la herramienta adecuada y cómo empezar rápidamente.
Qué es WebSocket y por qué se necesita en C#
WebSocket es un protocolo que proporciona comunicación full-duplex entre cliente y servidor a través de una única conexión TCP de larga duración. A diferencia de HTTP, donde el cliente envía una solicitud y espera una respuesta, WebSocket permite al servidor iniciar el envío de datos en cualquier momento. Para la plataforma .NET esto es especialmente importante, ya que C# es tradicionalmente fuerte en desarrollo del lado del servidor, y WebSocket amplía sus capacidades para escenarios en tiempo real.
SignalR — la solución oficial de Microsoft
SignalR es una biblioteca para ASP.NET Core que abstrae el trabajo con WebSocket, proporcionando una API de alto nivel. Selecciona automáticamente el mejor transporte: WebSocket, Server-Sent Events (SSE) o Long Polling. SignalR es ideal para proyectos empresariales donde son importantes la escalabilidad y la integración con el ecosistema .NET.
Instalación de SignalR
dotnet add package Microsoft.AspNetCore.SignalREjemplo de un chat simple con SignalR
Crearemos un hub — la clase central para gestionar las conexiones:
using Microsoft.AspNetCore.SignalR;
public class ChatHub : Hub{ public async Task SendMessage(string user, string message) { await Clients.All.SendAsync("ReceiveMessage", user, message); }}Configuración en Program.cs:
var builder = WebApplication.CreateBuilder(args);builder.Services.AddSignalR();
var app = builder.Build();app.MapHub<ChatHub>("/chat");
app.Run();Cliente en 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));Ventajas de SignalR:
- Selección automática de transporte (WebSocket, SSE, Long Polling)
- Soporte para envíos grupales y usuarios individuales
- Manejo integrado de reconexión ante cortes
- Integración con autenticación ASP.NET Core Identity
- Escalabilidad mediante Redis Backplane o Azure SignalR Service
Desventajas:
- Pesadez para proyectos simples
- Dependencia de ASP.NET Core (no funciona en aplicaciones de consola)
- Complejidad en la configuración para escenarios no estándar
WebSocketSharp — biblioteca ligera para .NET Framework y .NET Core
WebSocketSharp es una biblioteca minimalista que implementa el protocolo WebSocket sin abstracciones innecesarias. Es adecuada para crear conexiones WebSocket tanto del lado del servidor como del cliente. Ideal para integrarse en aplicaciones de consola o juegos de Unity.
Instalación mediante NuGet
dotnet add package WebSocketSharpEjemplo 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 También en la biblioteca
Envío de SMS en C# (.NET): Bibliotecas API y ejemplos de código
Trabajo con CSV en Rust: biblioteca csv y ejemplos prácticos
Aprendizaje automático en C++: revisión de bibliotecas y herramientas