Delphi Datasnap:有没有一种方法可以全局检测连接丢失?

Delphi Datasnap:有没有一种方法可以全局检测连接丢失?,delphi,delphi-2009,n-tier-architecture,datasnap,midas-server,Delphi,Delphi 2009,N Tier Architecture,Datasnap,Midas Server,我希望检测本地连接丢失。有没有办法做到这一点,就像Corelabs组件上的事件一样 谢谢 编辑: 对不起,我想说得更具体一些: 我目前正在使用datasnap 2009设计一个原型。所以我有一个瘦客户端,一个无状态服务器应用程序和一个数据库服务器 我能做的是检测并处理客户端和服务器应用程序之间的连接丢失(互联网连接),以适当地处理它,即:向用户显示信息性错误消息,或检测服务器关闭以在另一个应用程序服务器上静默重定向 在我使用ODAC组件管理的2层中,Torasesession有一些事件来处理此问

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

谢谢

编辑: 对不起,我想说得更具体一些: 我目前正在使用datasnap 2009设计一个原型。所以我有一个瘦客户端,一个无状态服务器应用程序和一个数据库服务器

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


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

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

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


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

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

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

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


我不确定是否无法检测连接丢失,因为底层套接字的连接丢失可能是可检测的。然而,大多数库都没有事件。