Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 检测到浏览器在http请求-响应周期中间关闭_Java_Servlets_Browser_Tcp_Jetty - Fatal编程技术网

Java 检测到浏览器在http请求-响应周期中间关闭

Java 检测到浏览器在http请求-响应周期中间关闭,java,servlets,browser,tcp,jetty,Java,Servlets,Browser,Tcp,Jetty,场景: 连接到java servlet的Web应用程序。(使用嵌入式码头) 高延迟请求,例如报告生成(需要几秒钟) 用户可以在http请求-响应周期之间关闭浏览器 问题: 如何在服务器端检测请求和响应周期之间关闭的浏览器 虽然这个问题可以通过使用来自UI的另一个请求来解决,但我想知道我们是否可以从通信协议本身获取信息?由于HTTP使用TCP/IP作为基本协议,我们是否应该能够将其检测为从连接启动器端关闭的连接 我浏览了ServletAPI以及用于配置jetty服务器的api,但没有找到任何密切相

场景

  • 连接到java servlet的Web应用程序。(使用嵌入式码头)
  • 高延迟请求,例如报告生成(需要几秒钟)
  • 用户可以在http请求-响应周期之间关闭浏览器
  • 问题

    如何在服务器端检测请求和响应周期之间关闭的浏览器

    虽然这个问题可以通过使用来自UI的另一个请求来解决,但我想知道我们是否可以从通信协议本身获取信息?由于HTTP使用TCP/IP作为基本协议,我们是否应该能够将其检测为从连接启动器端关闭的连接

    我浏览了ServletAPI以及用于配置jetty服务器的api,但没有找到任何密切相关的内容

    我们也讨论了这些问题


  • 有什么见解吗?

    当您尝试写入servlet输出流/写入程序时,会出现异常。

    谢谢您的回复。基本上是指向out.checkError()方法。我在寻找一种基于事件的机制,我可以在这两者之间检测到并可能停止处理。我认为不存在这样的事件,但您可以通过在客户端(javascript)中侦听
    window.close()
    并发出第二个ajax请求来触发您自己的事件。例如:
    $(窗口)。关闭(新函数(){…})
    感谢您对Joakim的回复。慢慢接近这样一个事实:从java可能无法从TCP启动器获得连接关闭的通知。我从下到上检查,TCP协议在这种情况下指定了握手(在发起方和接收方之间)。我目前正在检查它在java环境中的可行性,并试图理解为什么常规java库中没有提供它。这篇文章很好地解释了为什么不通信就无法检测到关闭的连接。严酷的现实:)@arunvg,别忘了,Java(以及HTTP/0.9、HTTP/1.0、HTTP/1.1、HTTP/2、servlet和WebSocket)支持半封闭连接。