如何创建逐步返回输出的网页脚本?

时间:2018-11-13 05:31:29

标签: java http spring-web

我们的过程非常漫长,我们想通过网页脚本的端点触发进度

但是由于步骤太多而太长,我们希望在正文中编写已完成的步骤,并希望在创建步骤的同时将它们显示在客户端浏览器中。

我尝试刷新outputStream,但是不会立即将输出呈现到浏览器中。浏览器会等到所有步骤完成以显示输出为止

public class ProgressiveProcessWebscript implements AbstractWebScript 
    public final void execute(WebScriptRequest request, 
         WebScriptResponse response) {
       ...
       response.setContentType(MIMETYPE_TXT);

       OutputStream output = response.getOutputStream();
       FilterOutputStream filterOutputStream = new FilterOutputStream(output);

       for (Step step: stepList) {
          step.execute();
          filterOutputStream.write(step.getName().getBytes());
          filterOutputStream.flush();
       }

WebScriptResponse

1 个答案:

答案 0 :(得分:0)

您不能简单地写入OutputStream并将其刷新。您必须实现另一个概念。您的问题有不同的解决方案。

您应该看一下这篇出色的文章:What are Long-Polling, Websockets, Server-Sent Events (SSE) and Comet?

在我看来,Ajax Long Polling解决方案可能是最简单的方法,因为您不需要任何其他框架服务器端。