Ho un sistema client-server, entrambi i lati scritti da me, e vorrei mettere i client in uno stato "offline" quando il server si disconnette/muore e quindi porta automaticamente tornano "online" quando il server è di nuovo disponibile.WCF: verifica la disponibilità del servizio per il servizio
Per la prima parte, ascolto gli eventi di errore del canale e gestisco impostando il client su offline. Quindi inizio a chiamare un servizio "ping" sul server (ogni 30 secondi) che restituisce un bool solo se è vivo. Una volta che è vivo, il cliente ottiene il bool e torna online.
Tutto questo funziona, il problema che sto avendo è che quando il client chiama il servizio ping e il server è inattivo, nessuna risposta viene inviata (ovviamente) e alla fine, dopo circa 2 minuti ottengo un endpoint non trovato eccezione. A questo punto ho già provato altri 3-4 ping e quindi ho fatto 3-4 eccezioni.
La mia domanda è, come posso gestire il servizio di ping più agevolmente? Idealmente, mi piacerebbe chiamare periodicamente un servizio che mi faccia sapere se è online e immediatamente mi fa sapere se non lo è.
Grazie, Will
Grazie Marc, ottima idea questo è quello che ho fatto. Avevo completamente dimenticato che si possono modificare al volo i timeout in questo modo. – WillH
Come rilevare che il server è disconnesso? –
@Ashutosh: se il server è disconnesso, la chiamata fallirà con uno dei numerosi errori possibili ("non trovato" o "timeout" o othesr) –