¿Qué es SignalR y para qué sirve?
\n\nSignalR es una biblioteca para ASP.NET Core que simplifica la adición de funciones en tiempo real (real-time) en aplicaciones web. Permite que el servidor envíe datos instantáneamente a los clientes conectados (navegadores, aplicaciones móviles, aplicaciones de escritorio) sin necesidad de solicitudes constantes por parte del cliente.
\n\n¿Para qué sirve? El protocolo HTTP tradicional funciona bajo el principio de "solicitud-respuesta": el cliente envía una solicitud, el servidor responde. Para recibir actualizaciones, el cliente debe consultar constantemente al servidor (polling). Esto es ineficiente y genera retrasos. SignalR resuelve este problema proporcionando una conexión bidireccional permanente.
\n\nCasos de uso principales:
\n- \n
- Chats y mensajería instantánea (entrega inmediata de mensajes) \n
- Paneles de monitoreo y dashboards (actualización de tipos de cambio, cotizaciones de acciones) \n
- Edición colaborativa de documentos (similar a Google Docs) \n
- Notificaciones en tiempo real (nuevos pedidos, alertas) \n
- Juegos multijugador \n
- Progreso de operaciones largas (carga de archivos, procesamiento de datos) \n
SignalR selecciona automáticamente el mejor protocolo de transporte para la conexión:
\n- \n
- WebSocket — el más eficiente, conexión bidireccional permanente \n
- Server-Sent Events (SSE) — transmisión unidireccional del servidor al cliente \n
- Long Polling — mecanismo de respaldo si WebSocket y SSE no están disponibles \n
Instalación de SignalR
\n\nInstalación en el servidor (ASP.NET Core)
\nPara la parte del servidor se utiliza el paquete NuGet. Ejecute en la terminal:
\ndotnet add package Microsoft.AspNetCore.SignalR\nO a través de Package Manager Console en Visual Studio:
\nInstall-Package Microsoft.AspNetCore.SignalR\n\nInstalación del cliente para JavaScript (navegador)
\nPara la parte del cliente (navegador) use npm:
\nnpm install @microsoft/signalr\nO conéctelo a través de CDN:
\n<script src="https://cdnjs.cloudflare.com/ajax/libs/microsoft-signalr/8.0.0/signalr.min.js"></script>\n\nInstalación del cliente para .NET (C#)
\nPara el cliente en C# (por ejemplo, aplicación de consola o WPF):
\ndotnet add package Microsoft.AspNetCore.SignalR.Client\n\nInicio rápido: ejemplo "¡Hola, Mundo!"
\n\nCreemos un chat simple: el servidor recibe un mensaje y lo distribuye a todos los clientes conectados.
\n\nPaso 1: Crear un Hub (parte del servidor)
\nCree el archivo ChatHub.cs:
using Microsoft.AspNetCore.SignalR;\n\nnamespace SignalRChat.Hubs\n{\n public class ChatHub : Hub\n {\n public async Task SendMessage(string user, string message)\n {\n // Envía el mensaje a todos los clientes conectados\n await Clients.All.SendAsync("ReceiveMessage", user, message);\n }\n }\n}\n\n\nPaso 2: Registrar SignalR en Program.cs
\nusing SignalRChat.Hubs;\n\nvar builder = WebApplication.CreateBuilder(args);\n\n// Agregar SignalR\nbuilder.Services.AddSignalR();\n\nvar app = builder.Build();\n\napp.MapGet("/", () => "Hello World!");\n\n// Mapear el hub a la ruta /chatHub\napp.MapHub<ChatHub>("/chatHub");\n\napp.Run();\n\n\nPaso 3: Crear el cliente (HTML + JavaScript)
\n<!DOCTYPE html>\n<html>\n<head>\n <title>SignalR Chat</title>\n</head>\n<body>\n <h2>SignalR Chat</h2>\n <div>\n <input type="text" id="userInput" placeholder="Su nombre" />\n <input type="text" id="messageInput" placeholder="Mensaje" />\n <button onclick="sendMessage()">Enviar</button>\n </div>\n También en la biblioteca
Geolocalización y mapas en Swift para iOS/macOS: guía completa
Generación de informes PDF en Go (Golang): bibliotecas y ejemplos
Generación de PDF en Swift (iOS/macOS): resumen de herramientas y ejemplos
Composer para PHP: guía completa con ejemplos
Métricas de Prometheus en Swift: monitoreo de aplicaciones iOS/macOS