繁体   English   中英

我的应用程序如何检测客户端的过早断开连接?

[英]How does my application detect a premature disconnect by a client?

当我调试使用Restlet的服务器应用程序时,客户端(它是一个移动应用程序)抛出TimeoutException,而不是获取数据,但我的服务器应用程序不知道。 该应用程序假定客户端已收到其数据。 我的应用程序如何检测到客户端没有获取数据?

用例不是调试,但我可以想象服务器可能足够慢,客户端可能会抛出超时异常,或者服务器应用程序没有注意到的过早断开连接的其他原因。

我可以采取的一条路径是构建应用级别的接收数据确认。 但这使我的应用程序更加复杂。

你不能,但你也不应该这样做。 如果客户端没有获得数据,那么它总是可以再次询问。 RESTful协议真的必须支持这种事情。

例如,如果客户端执行执行某些操作的POST,则它必须能够:

1)重新发布相同的数据, 仅在尚未完成的情况下执行操作,并返回之前可能已丢失的响应数据。 这通常通过在客户端上生成的某种事务ID来实现,或者在先前的请求中在服务器上生成; 要么

2)检查操作是否成功,如果没有则重试,或者如果有,则重新请求响应数据。 此外,通常还需要某种先前建立的交易ID。

此外,如果您遇到实际用户不确定某些操作是否已成功完成的情况,则需要一些他可以访问的UI来检查其状态。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM