Estoy utilizando SignalR (0.5.3) Hubs para una aplicación de chat donde cada pulsación de tecla se envía al servidor (guardado en el DB), retransmitido a todos los clientes y un valor devuelto (a tipo de token de cadena) se envía desde el servidor.Manejo de la conexión SignalR en el grupo de aplicaciones recicle
Funciona bien, hasta que el grupo de aplicaciones se recicla, deja de transmitir las teclas a todos los clientes (porque el estado del servidor en memoria se pierde, supongo) y el servidor tampoco devuelve ningún valor. En este punto, supongo que todas las solicitudes a través de SignalR son puestas en cola por IIS y luego procesadas una vez que el grupo de aplicaciones ha sido reciclado.
Mi pregunta es cómo puedo manejar este escenario para que todos los clientes conozcan la disponibilidad/demora del servidor debido al reciclaje del grupo de aplicaciones, notificar al usuario que espere un momento y luego reanudar la operación al reconectarse?
Opciones 1: Tiene razón, el cliente solo conoce la desconexión después de un retraso prolongado (tiempo de espera), por lo que el manejo a través de los eventos de reconexión/desconexión puede no funcionar, pero aún así le daré una oportunidad. – Nick
@Taylor Mullen - Hola, estoy en lo correcto al pensar que esto significa que a partir de 0.5.3 si el servidor de señalización desaparece, el cliente puede quedarse atascado intentando volver a conectarse hasta que se agote el tiempo de espera, y no hay eventos en el lado del cliente que puedan ser utilizado para detectar esto en este momento? Cheers Will – Will
@Will que es parcialmente correcto. En 0.5.3 NO recibirá ningún evento específico, como "nowReconnecting", pero puede detectar que SignalR está intentando volver a conectarse a través del evento stateChanged. Cuando entramos en el estado de reconexión, el evento stateChanged se activará y el nuevo estado de conexión se volverá a conectar. Además, no hay tiempo de espera en el cliente, intentará reconectarse para siempre. –