在服务器端使用curl作为客户端,运动衫和灰熊,我无法让服务器检测到客户端断开连接。 即使在服务器向客户端写入消息的情况下,ChunkedOutput.write也会成功。
是否有灰色或球衣的配置会导致对分块输出的写入失败?
答案 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小于发送的实际消息时,这也有效。