【问题标题】:Jetty - Detect disconnected client (Continuations)Jetty - 检测断开连接的客户端(续)
【发布时间】:2013-04-17 09:59:36
【问题描述】:

我正在使用带有 Continuations 的 Jetty 来实现长轮询,但我看不到检测客户端断开连接的方法。

我了解在第一次运行(创建 Continuation)和任何后续运行之间的时间内,由于 HTTP 的性质,客户端和服务器之间可能没有流量,但我可以解决只是能够检测到客户端在尝试发回消息时断开连接(服务器调用 Continuation)。

我一直在尝试找到一种方法来检测作者实际上并未写信给客户,但我似乎找不到。

【问题讨论】:

    标签: java jetty comet continuation


    【解决方案1】:

    在 java 中没有办法知道客户端已经断开连接而不尝试写入连接然后捕获失败。如果您尝试编写自己的长轮询实现,我的建议是简单地使用 cometd (cometd.org),因为它已经完成了所有这些并为您提供了完整的消息传递语义。如果这不起作用并且您仍然需要编写自己的,那么该项目是如何最好地使用延续(或 servlet 3.0 异步 servlet)的一个很好的例子。

    【讨论】:

    • 除了检测到断开连接之外,关于我的实现的一切都按预期工作。您说“尝试写入连接然后捕获故障”将提供一种检测断开连接的客户端的方法。这是我的情况的完美解决方案。你能提供一些代码或者至少是抛出异常的方法吗?
    • 相关questionanswer
    • 感谢@JoakimErdfelt 的链接,但问题与直接检测Java 中的套接字闭包有关,无需执行任何IO。在我的情况下,当我去发回一条消息(实际上是在做一些 IO)时检测一个关闭的连接就足够了。
    • 您能否指出会导致失败的方法@jesse-mcconnell ?
    猜你喜欢
    • 2011-07-08
    • 2014-04-14
    • 2020-01-15
    • 1970-01-01
    • 2012-05-17
    • 1970-01-01
    • 2021-02-21
    • 2020-08-27
    • 2015-11-21
    相关资源
    最近更新 更多