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

标签 java restlet

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

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

我可以采取的一种方法是内置对接收数据的应用程序级确认。但这使我的申请更加复杂。

最佳答案

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

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

1) 重新POST相同的数据,只有在还没有完成的情况下才执行操作,并返回之前可能遗漏的响应数据。这通常是通过在客户端或先前请求的服务器上生成的某种事务 ID 来完成的;或

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

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

关于java - 我的应用程序如何检测客户端过早断开连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33741953/

相关文章:

Java Entity Bean 已定义但作为类对象传递

java - 如何使用 gradle 为 Junit 测试授予写入权限

java - ReSTLet 添加参数到 webservice 调用

java - 如何使用非对称密码术加密大量数据?

java - JDialog 闪烁/闪烁作为通知

Java读卡器乱码

java - ReSTLet + Jackson - 在哪里注册模块

jakarta-ee - ReSTLet 中可以通过让线程休眠来实现长轮询吗?

tomcat - ReSTLet css 和 javascript 文件

javascript - 片段 uri 未在浏览器上执行