我有一个异步WCF服务实现,我想检测客户端在WCF方法调用期间何时中止连接。
基本上,这就是我想要的:
这可能吗?
这适用于长轮询实施。或者,服务器可以确保客户端成功收到响应吗?如果没有,则应该为下一个轮询请求保存响应。
答案 0 :(得分:2)
我不知道知道客户端是否连接的任何可靠方式。请参阅this,this和this
建议的一些替代方法是使用双工通道或使用队列。基于队列的解决方案将使服务器发布对队列的响应,并且客户端从队列中挑选这些响应。该队列可以在MSMQ,DB,Azure中实现。
由于
答案 1 :(得分:0)
您可以设置一个轮询解决方案,而不是客户端保持连接以等待答案,它会发出请求并立即断开连接。然后它每隔X秒重新连接一次,以轮询请求是否已完成。
在服务器上,如果您没有看到客户端轮询X * 2秒,那么客户端发生了一些事情,您应该中止该请求。
让这项工作需要服务器上的一些额外基础设施,以便跟踪哪些请求处于活动状态以及上次看到客户端的时间,不幸的是。