| | | |

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.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *