Повторно подключите логику с помощью уведомлений о подключении - PullRequest
0 голосов
/ 25 августа 2008

Скажем, у меня есть приложение, которое хочет постоянное соединение с сервером. Как реализовать логику подключения / повторного подключения, чтобы я не тратил ресурсы (мощность / пропускную способность) и у меня было быстрое время повторного подключения, когда подключение появляется / улучшается? Если я использую только уведомления о подключении, я могу застрять в проблемах, не связанных с локальной сетью.

Бонус, если вы могли бы показать мне C# версию.

1 Ответ

1 голос
/ 25 августа 2008

Это очень «огромный» вопрос. Я могу сказать, что мы используем O / R Mapper, и для каждого «запроса» к базе данных необходим объект с именем PersistenceBroker. Этот класс отвечает за все вещи БД, связанные с подключением, аутентификацией и т. Д.

Мы написали PersistenceBrokerFactory.GetCurrentBroker (), который возвращает «работающего» брокера. Если база данных внезапно выходит из строя (по какой-либо причине), объект CONN будет «timeout ()» через 30 секунд (или что вы определите). Если это произойдет, мы покажем пользователю, что он / она не в сети, и отобразим кнопку повторного подключения.

С другой стороны, для визуальной индикации того, что у пользователя есть подключение, у нас есть поток, работающий в фоновом режиме, который проверяет подключение к Интернету каждые 15 секунд. Мы делаем 1 пинг на google.com. ;) Если это не удается, мы предполагаем, что Интернет как-то не работает, и мы обновляем строку состояния.

Я мог бы показать вам весь этот код для монитора работоспособности сети, если хотите. Я взял некоторые биты из Google и другие, которые я сделал сам:)

...