WCF – 让客户检查服务可用性

我有一个客户端 – 服务器系统,双方都是由我编写的,当服务器断开/死机时我想让客户端处于“离线”状态,然后当服务器再次可用时自动将它们“恢复” 。

对于第一部分,我监听通道故障事件并通过将客户端设置为脱机来处理。 然后我开始在服务器上调用“ping”服务(每30秒),如果它还活着,它就会返回一个bool。 一旦它活着,客户端就会获得bool并重新上线。

这一切都有效,我遇到的问题是,当客户端调用ping服务并且服务器关闭时,没有响应(显然),最终,大约2分钟后我得到一个端点未找到exception。 到这个时候,我已经尝试了3-4次ping,因此有3-4个exception酿造。

我的问题是,如何更优雅地处理ping服务? 理想情况下,我想定期拨打一个服务,让我知道它是否在线,并立即让我知道它是否在线。

那这个呢:

  • 如果检测到服务器断开连接,请进入“Ping”模式
  • 在“ping模式”中,您将客户端的“sendTimeout”设置为非常短的内容,例如大约2秒左右,因为您应该立即回答对服务的Ping方法的调用
  • 一旦你的“Ping”成功运行,你再次重新创建客户端代理并将客户端的“sendTimeout”设置回原始值(默认为1分钟 – 取决于你有什么意义,15秒,30秒 – 无论如何)

这样,如果您处于“Ping模式”,您可以快速获得响应(或超时),并且可以快速检测服务的可用性。