我目前正在使用 Jetty 8,我想在 servlet 响应中写入几个事件(文本)。例如:
写入开始 写事件2 写入事件3 写完成
全部由\n分隔
此响应的时间范围可能不会超过 20 秒,但客户端应该在每个事件(行)发生时接收到它。我找不到任何相关文档,但我想向社区核实。
如果 Jetty 不这样做,是否还有其他 servlet 引擎可以这样做并且也可以嵌入?
顺便说一句,我尝试了以下操作,但在 servlet 返回之前没有收到任何数据,然后一次性收到了所有数据。
resp.setContentType("text/html");
resp.setHeader("Transfer-Encoding", "chunked");
resp.getWriter().write("closing");
resp.getWriter().flush();
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
resp.getWriter().write("closed");
resp.getWriter().flush();
编辑:必须使用\r\n 作为行终止符
最佳答案
如果每行都以\r\n 结尾,则有效
resp.setContentType("text/html");
resp.setHeader("Transfer-Encoding", "chunked");
resp.getWriter().write("closing\r\n");
resp.getWriter().flush();
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
resp.getWriter().write("closed\r\n");
resp.getWriter().flush();
关于jetty - Jetty 是否支持 HTTP 分块响应/传输编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41699339/