gpt4 book ai didi

java - 检测 Web 服务中的客户端断开连接

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:31:05 24 4
gpt4 key购买 nike

我正在使用 Apache CXF Web 服务堆栈。当客户端在操作完成之前超时或与服务器断开连接时,服务器将继续运行该操作直到完成。我想让服务器检测客户端何时断开连接并相应地进行处理。

有没有一种方法可以检测客户端何时使用 Apache CXF 断开连接?使用其他 Java 网络服务堆栈怎么样?

最佳答案

我不熟悉 Apache CXF,但以下内容应该适用于任何基于 Java Servlet 的框架。

为了确定用户是否已断开连接(停止按钮、关闭浏览器等),服务器必须尝试发送数据包。如果 TCP/IP 连接已关闭,将抛出 IOException

理论上,Java 应用程序可以在处理过程中的不同点发送空格字符。 IOException 表示客户端已经离开并且可以中止处理。

但是,这种技术可能存在一些问题:

  1. 在处理过程中发送字符会导致响应被“提交”,因此可能无法根据长时间运行的服务器端处理结果设置 HTTP header 、cookie 等。

  2. 如果输出流被缓冲,则不会立即发送空格字符,从而无法执行充分的测试。可以使用 flush() 作为解决方法。

  3. 对于给定的框架或 View 技术(JSP 等),可能很难实现此技术。例如,页面呈现代码将无法在提交响应后发送内容类型。

关于java - 检测 Web 服务中的客户端断开连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48859/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com