2009-02-13 12 views
7

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

Благодаря

EDIT: К сожалению, я буду стараться быть более конкретным: Я в настоящее время разрабатывает прототип с помощью DataSnap 2009. Так что у меня есть тонкий клиент, сервер приложений без гражданства и сервер базы данных.

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

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

ответ

4

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

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

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

+0

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

1

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

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^