English 中文(简体)
数据捕获:是否有全局检测连接丢失的方法?
原标题:
  • 时间:2009-02-13 17:43:31
  •  标签:

我正在寻找检测本地连接丢失的方法。是否有像Corelabs组件上的事件一样的方法可以做到这一点?

谢谢 (xiè xiè)

EDIT: Sorry, I m going to try to be more specific: I m currently designing a prototype using datasnap 2009. So I ve got a thin client, a stateless server app and a database server.

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

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

最佳回答

通常情况下,除非针对数据库发出语句,否则不会在连接断开时触发任何事件。这是因为除非进行某种活动检测,否则无法知道连接丢失。

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

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

问题回答

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

  • 如果失败了,客户端就会知道连接出了问题。

  • 如果服务器在一段时间内(例如,两倍于心跳间隔的时间)不再收到客户端的响应,那么它可以得出结论客户端已经断开连接,但这需要一个具有状态的服务器(而您的设计是无状态的,因此需要在辅助系统中进行事件处理,该系统可以通过消息队列提供数据)。





相关问题
热门标签