tutorial net aspnet asp .net signalr signalr-hub reconnect

.net - net - signalr tutorial



¿Cuándo ocurre una reconexión en signalR? (1)

Empecé a trabajar con SignalR y estaba tratando de averiguar cuándo se produce una reconexión Hub. No encontré ninguna explicación satisfactoria en la web. ¿Alguien puede explicar cuándo / por qué ocurre una reconexión?


Una reconexión de hub se produce cuando un cliente se desconecta y luego recupera la conectividad poco después. Los valores de configuración de SignalR determinan en gran medida las marcas de tiempo de los siguientes ejemplos, por lo tanto, no tome los tiempos al pie de la letra.

Aquí hay varios ejemplos y sus resultados (formato de tiempo m: ss) que implican el comportamiento de reconexión:

Cuando menciono lo siguiente me refiero al método Hub del servidor

  • OnConnected
  • OnDisconnected
  • OnReconnected

1)
0:00 - El cliente se conecta al servidor, se activa OnConnected
0:10 - El cliente pierde la conexión debido a problemas con el ISP (y se da cuenta de que pierde la conexión)
0:15 - El cliente recupera la conectividad
0:16 - Se activa el evento OnReconnected

2)
0:00 - El cliente se conecta al servidor, se activa OnConnected
0:10 - El cliente pierde la conexión debido a tirar del cable de ethernet (no se da cuenta de que está desconectado)
0:15 - El cliente recupera la conectividad
Dos cosas pueden suceder aquí
A: 0:16 - No pasa nada y el cliente continúa con su conexión anterior
B: 0: ~ 45 - El cliente se da cuenta de que está desconectado *
B: 0:46 - El cliente pasa al estado de reconexión
B: 0:47 - El cliente se vuelve a conectar y el evento OnReconnected se desencadena.

3)
0:00 - El cliente se conecta al servidor, se activa OnConnected
0:10 - El cliente pierde la conexión debido a tirar del cable de ethernet (no se da cuenta de que está desconectado)
0: ~ 45 - El cliente se da cuenta de que está desconectado *
0:46 - El cliente pasa al estado de reconexión
1:15 - El servidor determina que el cliente ha estado fuera durante demasiado tiempo y luego se olvida de él, haciendo una cola para un comando de "desconexión" para que el cliente lo reciba si se vuelve a conectar un poco más tarde. ***
1:15 - Activado está desconectado
1:16 - El cliente recupera la conectividad
1:17 - El cliente hace una reconexión "suave" (no activa OnReconnected)
1:18 - El cliente recupera el comando "desconectar"
1:19 - El cliente llama "detener" y realiza una desconexión suave (no activa OnDisconnected)

4)
0:00 - El cliente se conecta al servidor, se activa OnConnected
0:10 - El cliente pierde la conexión debido a tirar del cable de ethernet (no se da cuenta de que está desconectado)
0: ~ 45 - El cliente se da cuenta de que está desconectado *
0:46 - El cliente pasa al estado de reconexión
1:15 - El servidor determina que el cliente ha estado fuera durante demasiado tiempo y luego se olvida de él, haciendo una cola para un comando de "desconexión" para que el cliente lo reciba si se vuelve a conectar un poco más tarde. ***
1:15 - Activado está desconectado
1:30 - El cliente deja de intentar conectarse nuevamente (lo ha intentado durante demasiado tiempo) **
1:30 - El cliente pasa a un estado desconectado

* Debido a que el cliente mantiene vivo el cheque: se usa para determinar cuándo un cliente está fuera de línea debido a la falta de existencias. No utilizado para el transporte de larga duración

** Debido al tiempo de espera de desconexión del lado del cliente: se usa para determinar cuándo un cliente se ha reconectado durante demasiado tiempo y es probable que el servidor se haya olvidado del cliente durante el tiempo.

*** Debido al tiempo de espera de desconexión del servidor: se usa para determinar cuándo debe olvidarse un cliente. Es un lapso de tiempo que comienza a acumularse una vez que una conexión está etiquetada como muerta en el servidor. En última instancia, el servidor pone en cola un comando de desconexión para el tema del cliente que le dice al cliente (si se vuelve a conectar) que necesita iniciar una nueva conexión. El comando desaparecerá del servidor cuando se limpia el tema.

¡Espero que esto ayude!