Датаснап:Есть ли способ обнаружить потерю соединения во всем мире?

StackOverflow https://stackoverflow.com/questions/546930

Вопрос

Я хочу обнаружить потерю локального соединения.Есть ли способ сделать это, как в случае с событиями на компонентах Corelabs?

Спасибо

РЕДАКТИРОВАТЬ:Извините, попробую уточнить:В настоящее время я разрабатываю прототип, используя datasnap 2009.Итак, у меня есть тонкий клиент, серверное приложение без сохранения состояния и сервер базы данных.

Что я мог бы сделать, так это обнаружить и обработать потерю соединения (подключение к Интернету) между клиентом и серверным приложением, чтобы обработать ее соответствующим образом, то есть:Отображение пользователю информативного сообщения об ошибке или обнаружение отключения сервера для автоматического перенаправления на другой сервер приложений.

На двухуровневом уровне я управлял этим с помощью компонентов ODAC, у TOraSession есть некоторые события для решения этих проблем.

Это было полезно?

Решение

Обычно при разрыве соединения не возникает событие, если только к базе данных не запускается оператор.Это связано с тем, что невозможно узнать о потере соединения, если не происходит своего рода проверка связи.

Многие платформы проверяют, действительно ли соединение, выполняя очень небольшой запрос к серверу.Возможно получение времени с сервера.Особенно в среде пула соединений.

Вы можете реализовать функцию проверки соединения в своем приложении в некоторых событиях базы данных (перед выполнением?).Или сделайте таймер, который проверяется каждые 10 секунд.

Другие советы

Создайте поток на клиенте, который периодически отправляет на сервер некоторые команды RPC «Ping» или «Heartbeat».

  • если это не удается, клиент знает, что что-то случилось с соединением

  • если сервер больше не слышит клиента в течение некоторого периода времени (например, в два раза больше интервала подтверждения), он может сделать вывод, что клиент отключился, однако для этого требуется сервер с отслеживанием состояния (а ваш проект не имеет состояния, поэтому потребуется обработка событий во вторичной системе, которая может передаваться через очередь сообщений)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top