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

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

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


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


Ejemplo 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