Datasnap: есть ли способ обнаружить потерю соединения во всем мире? - PullRequest
7 голосов
/ 13 февраля 2009

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

Спасибо

EDIT: Извините, я постараюсь быть более конкретным: В настоящее время я разрабатываю прототип с использованием datasnap 2009. Итак, у меня есть тонкий клиент, серверное приложение без сохранения состояния и сервер базы данных.

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

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

Ответы [ 2 ]

4 голосов
/ 17 февраля 2009

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

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

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

1 голос
/ 15 июля 2011

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

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

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

...