У меня есть клиент-серверная система, написанная мной обе стороны, и я хотел бы поставить клиентов в состояние «офлайн», когда сервер отключается/умирает, а затем автоматически приносит их обратно «в сети», когда сервер снова доступен.WCF - есть проверка клиента на наличие доступности
Для первой части я слушаю события с ошибками канала и обрабатываю их, установив клиент в автономный режим. Затем я запускаю вызов службы «ping» на сервере (каждые 30 секунд), который возвращает bool, если он жив. Как только он жив, клиент получает bool и переключается обратно в Интернете.
Все это работает, проблема заключается в том, что когда клиент вызывает службу ping, а сервер не работает, ответ не отправляется (очевидно) и, в конце концов, примерно через 2 минуты я получаю исключение, не найденное в конечной точке. К этому времени я уже пробовал еще 3-4 пинга и, следовательно, заваривал 3-4 исключения.
Мой вопрос: как я могу справиться с услугой ping более изящно? В идеале я хотел бы периодически называть услугу, которая позволяет мне знать, если она в сети, и мгновенно позволяет мне знать, если это не так.
Спасибо, Will
Спасибо Marc, отличная идея, это то, что я сделал. Я совершенно забыл, что можно редактировать тайм-ауты перехвата на лету, как это. – WillH
Как обнаружить сервер отключен? –
@Ashutosh: если сервер отключен, ваш вызов завершится с одной из нескольких возможных ошибок («не найден» или «тайм-аут» или othesr) –