Tengo un sistema cliente-servidor, ambas partes escritas por mí, y me gustaría poner a los clientes en un estado 'desconectado' cuando se desconecta el servidor/muere, para luego llevar volver a estar "en línea" cuando el servidor esté disponible nuevamente.WCF - tener cheque cliente para la disponibilidad del servicio
Para la primera parte, que escuchar los eventos de fallo de canal y el mango que al establecer que el cliente fuera de línea. Luego empiezo a llamar un servicio 'ping' en el servidor (cada 30 segundos) que simplemente devuelve un bool si está activo. Una vez que está vivo, el cliente obtiene el bool y vuelve a conectarse en línea.
Todo esto funciona, el problema que tengo es que cuando el cliente llama al servicio de ping y el servidor está inactivo, no se envía ninguna respuesta (obviamente) y finalmente, después de aproximadamente 2 minutos obtengo una excepción de punto final no encontrada. En este momento ya he probado 3-4 pings más y, por lo tanto, tengo 3-4 excepciones en preparación.
Mi pregunta es, ¿cómo puedo tratar con el servicio de ping con más gracia? Idealmente, me gustaría llamar periódicamente a un servicio que me permite saber si está en línea, y al instante me permite saber si no lo está.
Gracias, Will
Gracias Marc, gran idea esto es lo que he hecho. Había olvidado por completo que uno puede editar los tiempos de espera de enlace sobre la marcha de esta manera. – WillH
¿Cómo detectar el servidor está desconectado? –
@Ashutosh: si el servidor está desconectado, su llamada fallará con uno de varios posibles errores ("no encontrado" o "tiempo de espera" u otros) –