SignalR

 

¿Qué es SignalR?



La biblioteca ASP.NET Core SignalR es de código abierto y permite a los desarrolladores simplificar la inclusión de funcionalidad web en tiempo real a las aplicaciones. Esto significa que el código del lado del servidor puede enviar instantáneamente contenido a los clientes conectados.

Entre los ejemplos de aplicaciones que encajarían bien con SignalR se incluyen:

  • Aplicaciones de chat como Facebook Messenger.
  • Aplicaciones de redes sociales, como Facebook, que muestran nuevas notificaciones a medida que se producen.
  • Cuadros de mando en directo, como los cuadros de mando de KPI, que muestran al instante información de ventas actualizada.
  • Software de colaboración que permite a los equipos reunirse y compartir ideas.

En esencia, la API de SignalR permite que el código del lado del servidor llame a funciones de JavaScript en clientes conectados a través de llamadas a procedimientos remotos (RPC).

SignalR para ASP.NET Core se encarga automáticamente de la gestión de las conexiones. Si piensas en un ejemplo de sala de chat, SignalR puede enviar mensajes a todos los clientes conectados al mismo tiempo. También puede enviar mensajes a un cliente específico o a un grupo de clientes.

Más adelante, verás cómo se hace esto cuando veamos las propiedades y métodos de la interfaz IHubCallerClients.

SignalR para ASP.NET Core puede escalar automáticamente para permitirle manejar un tráfico creciente.

Para manejar la comunicación en tiempo real, SignalR soporta

  • ·    WebSockets
  • ·         Server-Sentevent
  • ·         Long Polling

Estos son llamados transportes. Como se muestra en la Figura 1, SignalR se encuentra sobre los transportes de nivel inferior.


Figura 1

Los transportes permiten a los desarrolladores centrarse en el proceso de negocio en lugar de cómo se envían los mensajes (o decidir qué transporte utilizar).

SignalR puede evaluar dinámicamente los transportes soportados. En otras palabras, SignalR elegirá automáticamente qué método de transporte es el más adecuado, basándose en las capacidades del cliente y del servidor.

Esto puede ilustrarse como se ve en la Figura 2. Si los WebSockets (el más eficiente de los transportes) no son compatibles con el servidor o el navegador, SignalR recurrirá a los eventos enviados por el servidor. Si los eventos enviados por el servidor no son compatibles, SignalR recurrirá al sondeo largo.



Figura 2.

 

Nota: Según el documento de seguimiento de estándares de Internet del Grupo de Trabajo de Ingeniería de Internet (IETF), el protocolo WebSocket permite la comunicación bidireccional en tiempo real entre clientes y servidores en aplicaciones basadas en la web.

Cuando SignalR establece una conexión, comenzará a enviar mensajes para verificar que la conexión sigue activa. Si la conexión no está activa, SignalR lanzará una excepción.

Volviendo a la Figura 1, recordará que SignalR se encuentra sobre los transportes. Esto permite a los desarrolladores trabajar de forma coherente, independientemente del transporte que utilice SignalR.

 

Hubs

Los hubs son utilizados por SignalR para comunicarse entre servidores y clientes. El hub permite que un cliente y un servidor llamen a métodos entre sí.



Figura 3.

 

Dentro de los métodos de esta clase Hub, puedes llamar a un método en todos los clientes conectados, como se ve en la Figura 3.



Figura 4

El hub también puede llamar a un método en un cliente específico, como se ilustra en la Figura 4.

 



Figura 5

El concentrador también puede llamar a un método en un grupo de clientes, como se ilustra en la Figura 5.



Figura 6

 

Además, el cliente puede llamar a un método del concentrador, como se ilustra en la Figura 6.

 

La clase Hub también tiene una propiedad Context que contiene las siguientes propiedades, que proporcionan información sobre la conexión:

·         ConnectionAborted
·         ConnectionId
·         Features
·         Items
·         User
·         UserIdentifier


Note: You can find the SignalR repository on GitHub.

No hay comentarios