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
Publica un comentario