Jersey ChunkedOutput - 如何检测客户端断开连接?

时间:2016-12-07 19:29:35

标签: java jersey grizzly

在服务器端使用curl作为客户端,运动衫和灰熊,我无法让服务器检测到客户端断开连接。 即使在服务器向客户端写入消息的情况下,ChunkedOutput.write也会成功。

是否有灰色或球衣的配置会导致对分块输出的写入失败?

1 个答案:

答案 0 :(得分:0)

似乎在使用Grizzly时 - 工作者线程IOStrategy ChunkedOutput对象(Jersey对象)无法识别客户端立即断开连接。

我最终使用了Same-thread IOStrategy。这可能不是所有应用程序的最佳解决方案,但对我来说这很棒。

NetworkListener listener = new NetworkListener("grizzly2", host, port);
listener.getTransport().setIOStrategy(SameThreadIOStrategy.getInstance());

我也尝试使用Worker-thread IOStrategy并降低写缓冲区:

NetworkListener listener = new NetworkListener("grizzly2", host, port);
listener.getTransport().setWriteBufferSize(bufferSize);

当bufferSize小于发送的实际消息时,这也有效。