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