7

我正在寻找检测本地连接丢失。有没有办法做到这一点,就像 Corelabs 组件上的事件一样?

谢谢

编辑:抱歉,我将尝试更具体一点:我目前正在使用 datasnap 2009 设计原型。所以我有一个瘦客户端、一个无状态服务器应用程序和一个数据库服务器。

我能做的是检测和处理客户端和服务器应用程序之间的连接丢失(互联网连接)以适当地处理它,即:向用户显示一条信息性错误消息或检测服务器关闭以静默重定向另一个应用服务器。

在我使用 ODAC 组件管理的 2 层中,TOraSession 有一些事件来处理这个问题。

4

2 回答 2

4

通常,连接断开时不会触发任何事件,除非针对数据库触发语句。这是因为没有办法知道连接丢失,除非有某种活动 ping 正在进行。

许多框架通过对服务器进行非常小的查询来检查连接是否仍然有效。可能是从服务器获取时间。特别是在连接池环境中。

您可以在某些数据库事件(执行前?)中在您的应用程序中实现连接检查功能。或者制作一个每 10 秒检查一次的计时器。

于 2009-02-17T09:35:59.447 回答
1

在客户端上生成一个线程,该线程定期向服务器发送一些 RPC 'Ping' 或 'Heartbeat' 命令。

  • 如果失败,则客户端知道连接发生了问题

  • 如果服务器在一段时间内不再听到客户端(例如,两次心跳间隔),他可以断定客户端已断开连接,但这需要有状态服务器(并且您的设计是无状态的,因此需要事件处理在辅助系统中,可以通过消息队列馈送)

于 2011-07-15T12:01:10.590 回答