Bibliotecas WebSocket C# (.NET): SignalR, Fleck, WebSocketSharp

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

Bibliotecas WebSocket C# (.NET): SignalR, Fleck y WebSocketSharp



WebSocket es un protocolo de comunicación full-duplex sobre TCP que permite al servidor y al cliente intercambiar datos en tiempo real sin solicitudes HTTP constantes. En el ecosistema de C# (.NET) existen varias bibliotecas que simplifican la integración de WebSocket. En este artículo revisaremos tres de las soluciones más populares: SignalR (biblioteca oficial de Microsoft), Fleck (servidor ligero) y WebSocketSharp (cliente-servidor universal).



1. SignalR — herramienta oficial de Microsoft



SignalR es una biblioteca de alto nivel para ASP.NET Core que selecciona automáticamente el mejor transporte (WebSocket, Server-Sent Events, Long Polling) según las capacidades del cliente. Es ideal para crear chats, paneles de control y juegos.



Características principales:

  • Conmutación automática entre transportes.
  • Grupos y transmisiones broadcast.
  • Soporte de escalado (Redis, Azure SignalR Service).
  • Integración con clientes en JavaScript, .NET, Java.


Ejemplo de hub del servidor en C#:

using Microsoft.AspNetCore.SignalR;

public class ChatHub : Hub{ public async Task SendMessage(string user, string message) { // Enviamos el mensaje a todos los clientes conectados await Clients.All.SendAsync("ReceiveMessage", user, message); }

public override async Task OnConnectedAsync() { await Clients.Caller.SendAsync("Notify", "Te has conectado al chat"); await base.OnConnectedAsync(); }}


Ejemplo de cliente en C# (Consola):

using Microsoft.AspNetCore.SignalR.Client;

var connection = new HubConnectionBuilder() .WithUrl("https://tuservidor.com/chathub") .Build();

connection.On<string, string>("ReceiveMessage", (user, message) =>{ Console.WriteLine($"{user}: {message}");});

await connection.StartAsync();await connection.InvokeAsync("SendMessage", "Usuario1", "¡Hola!");


2. Fleck — servidor WebSocket minimalista



Fleck es una biblioteca ligera para crear servidores WebSocket sin dependencias de ASP.NET. Es ideal para aplicaciones simples donde no se necesitan las abstracciones complejas de SignalR.



Características:

  • Funciona sobre TCP puro (sin HTTP).
  • Soporta SSL (WSS).
  • Sin escalado integrado — solo un proceso.


Ejemplo de servidor con Fleck:

using Fleck;

var server = new WebSocketServer("ws://0.0.0.0:8181");var connections = new List<IWebSocketConnection>();

server.Start(socket =>{ socket.OnOpen = () => { Console.WriteLine("Cliente conectado"); connections.Add(socket); }; socket.OnClose = () => { Console.WriteLine("Cliente desconectado"); connections.Remove(socket); }; socket.OnMessage = message => { // Enviamos el mensaje a todos foreach (var client in connections) { client.Send($"Eco: {message}"); } };});

Console.WriteLine("Servidor iniciado en ws://localhost:8181");Console.ReadLine();


3. WebSocketSharp — cliente y servidor universal



WebSocketSharp es una biblioteca de código abierto que proporciona tanto cliente como servidor WebSocket. No depende de ASP.NET y funciona en .NET Framework y .NET Core.



Características clave:

  • Soporte de SSL/TLS y proxy.
  • Modelo basado en eventos (OnOpen, OnClose, OnMessage, OnError).
  • Envío de datos binarios (byte[]).


Ejemplo de cliente con WebSocketSharp:

using WebSocketSharp;

using (var ws = new WebSocket("wss://echo.websocket.org")){ ws.OnMessage += (sender, e) =>

Recommendations