有没有办法检测到客户端与我的服务的断开连接?我只能在try-catch方法中知道某个客户端是否已经断开连接,这不是一个很好的方法。我不想为每个连接到我的服务的新客户端创建一个计时器来监视其最后一次交易。
不,没有简单或优雅的方法来检测客户端断开连接。如果当客户端关闭或崩溃时服务收到一个“ClientTerminated”事件,那将是一个不错的环境。然而,这种行为与基于消息的架构并不符合。一个不太优雅的解决方案是使用回调方法定期向客户端发送ping请求,并查看是否超时。另外,如果您正在使用PerSession实例化,则可以将inactivityTimeout设置为一个较短的值(例如一分钟,而不是默认的10分钟),并在客户端上使用计时器定期调用服务器上的空方法。请参见this question以了解类似讨论。