【发布时间】:2020-05-30 17:37:56
【问题描述】:
问题
基于 Jetty 9 的服务器正在处理耗时(30-60 秒)和计算量大(大约 20 个线程参与并行处理)请求。
由于交互性,客户端可能会在几秒钟后取消 HTTP 请求并发送一个新请求。
如果连接已被客户端关闭,最好立即取消计算。
尝试失败
如果 HTTP 连接关闭,尝试写入响应输出流将触发
IOException。但是,在这个应用程序的情况下,HTTP 状态取决于整个计算的结果,因此不可能在处理过程中将任何内容写回套接字。因此,此选项不适用。Jetty 有方便的
HttpConnection.getCurrentConnection()方法,可用于获取与HTTP 连接相关的一些内部类的引用,包括底层SocketChannel。虽然我还没有找到通过SocketChannel或其他与连接相关的 Jetty 类来检查连接活跃度的方法。
【问题讨论】: