【发布时间】:2010-07-28 11:36:52
【问题描述】:
我有什么方法可以检测到客户端与我的服务断开连接?我只有机会知道某个客户端是否在 try-catch 方法上断开连接,这不是一个很好的方法。我不想为连接到我的服务的每个新客户端创建一个计时器,只是为了监控它的最后一个事务。
【问题讨论】:
我有什么方法可以检测到客户端与我的服务断开连接?我只有机会知道某个客户端是否在 try-catch 方法上断开连接,这不是一个很好的方法。我不想为连接到我的服务的每个新客户端创建一个计时器,只是为了监控它的最后一个事务。
【问题讨论】:
不,没有简单或优雅的方法来检测客户端断开连接。如果在客户端关闭或崩溃时,服务收到“ClientTerminated”事件,那将是一个很好的环境。但是,这种行为根本不适合基于消息的架构。
一个不太优雅的解决方案是使用回调方法定期 ping 客户端,并查看此调用是否超时。
或者,如果您使用 PerSession 实例化,您可以将 inactivityTimeout 设置为一个较短的值(例如,一分钟而不是默认的 10 分钟),并在客户端使用计时器定期调用服务器。
参见this question 进行类似讨论。
【讨论】: