Java Jetty-检测断开连接的客户端(续)

Java Jetty-检测断开连接的客户端(续),java,jetty,comet,continuation,Java,Jetty,Comet,Continuation,我使用Jetty和Continuations来实现长轮询,但我没有发现检测客户端断开连接的方法 我知道在第一次运行(创建延续)和任何后续运行之间,由于HTTP的性质,客户机和服务器之间可能没有通信量,但我可以在尝试发回消息(服务器调用延续)时检测到客户机断开连接 我一直在试图找到一种方法来检测编写器是否真的在向客户机写入数据,但我似乎找不到一种方法。在java中,如果不尝试写入连接然后捕获故障,就无法知道客户机已断开连接。如果您试图编写自己的长轮询实现,我的建议是只使用cometd(cometd

我使用Jetty和Continuations来实现长轮询,但我没有发现检测客户端断开连接的方法

我知道在第一次运行(创建延续)和任何后续运行之间,由于HTTP的性质,客户机和服务器之间可能没有通信量,但我可以在尝试发回消息(服务器调用延续)时检测到客户机断开连接


我一直在试图找到一种方法来检测编写器是否真的在向客户机写入数据,但我似乎找不到一种方法。

在java中,如果不尝试写入连接然后捕获故障,就无法知道客户机已断开连接。如果您试图编写自己的长轮询实现,我的建议是只使用cometd(cometd.org),因为它已经完成了所有这一切,并为您提供了完整的消息传递语义。如果这不起作用,您仍然需要编写自己的,那么该项目就是如何最好地使用continuations(或servlet 3.0 async servlets)的一个很好的例子。

除了检测断开连接之外,我的实现的一切都按预期工作。您说“尝试写入连接,然后捕获故障”将提供一种检测断开连接的客户端的方法。这是我这个案子的完美解决方案。你能提供一些代码或者至少是抛出异常的方法吗?相关的,谢谢@JoakimErdfelt链接,但问题是直接在Java中检测套接字闭包,而不做任何IO。在我的情况下,当我去发回一条消息(实际上是做了一些IO)时,只要检测到一个关闭的连接就足够了。你能告诉我会导致失败的方法吗@jesse mcconnell?