Jetty是否支持HTTP Chunked Responses / Transfer-Encoding?

时间:2017-01-17 14:11:52

标签: jetty embedded-jetty

我目前正在使用Jetty 8,我想在servlet响应中编写几个事件(文本)。例如:

写开始 写event2 写event3 写完了

全部由\ 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作为行终止符

1 个答案:

答案 0 :(得分:2)

如果每行都以\ 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();