码头如何检测,如果HTTP连接被关闭客户端

阿列克谢Ragozin:

问题

码头9基于服务器正在处理耗时(30-60秒)和计算重(〜涉及并行处理20个线程)请求。

由于互动性,客户端可能会取消几秒钟后,HTTP请求和发送一个新的。

人们希望立即取消计算,如果连接已经被客户关闭。

不成功的尝试

  1. 在封闭的HTTP连接的情况下,尝试写入响应输出流会触发IOException虽然,在此应用程序的情况下,HTTP状态取决于整个计算的结果,所以这是不可能写任何东西回窝在处理过程中。因此,这个选项是不适用的。

  2. 码头有方便的HttpConnection.getCurrentConnection()可以用来去相关,包括基本的HTTP连接一些内部类的引用方法SocketChannel虽然我还没有找到一种方法来检查连接虽然活力的SocketChannel或与之相关的连接其他码头的班。

乔金 - Erdfelt:

最好的选择是使用javax.servlet.AsyncContext和它的javax.servlet.AsyncListener

与呼叫开始java.servlet.HttpServletRequest.startAsync()得到AsyncContext

然后添加自定义AsyncListener你自己的,不要忘了还设置了超时您AsyncContext(作为其存在覆盖默认的空闲超时机制)

你会得到事件意味着什么对你有用...

  • 的onComplete -处理已完成
  • 的onError -处理已经失败(诸如意外终止连接)
  • onTimeout -在AsyncContext超时解雇

这是在Servlet API提供了整整您的情况的机制:在可能被提早终止活动请求计算或后端重处理。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Python HTTP Server /客户端:远端关闭连接,没有响应错误

如何关闭AWS S3客户端连接

如何检测客户端的时区?

如何正确处理HTTP文件服务器上的客户端“连接:关闭”请求?

如何非破坏性地检查HTTP客户端是否已关闭连接?

Spring Websocket-如何检测客户端断开连接

码头:如何在码头客户端中使用SSL

Http客户端现有连接被远程主机强行关闭

Python 3 asyncio如何正确关闭客户端连接

每次通话均与python tornado HTTP客户端关闭连接

如果应用程序关闭WCF-客户端连接

如何关闭SignalR中的客户端JavaScript“ Hub”连接?

如何检测客户端是否关闭Rails 4.2上的连接

WebSocket客户端在连接时关闭

检测客户端关闭连接Blazor

如何处理客户端EventSource.close()关闭的反应流HTTP连接上的ClosedChannelException?

为什么客户端HTTP连接没有关闭?

如果客户端在10秒内没有响应,如何通过超时关闭连接?

必须HTTP客户端关闭其连接

如何关闭WCF客户端连接

检测客户端断开连接

如果服务器关闭连接,Python客户端将断开连接

http客户端关闭连接时如何存储响应?

如何强制关闭客户端连接Rabbitmq

TcpInboundGateway:如何关闭与远程客户端的现有连接

服务器如何在服务器/客户端拓扑中检测客户端电源关闭

我如何连接http客户端

检测grpc服务器中关闭的客户端连接

如何在 ASIO 中关闭异步客户端连接?