【问题标题】:How to flush with Flux (Reactor)?如何用 Flux (Reactor) 冲洗?
【发布时间】:2019-06-23 12:53:39
【问题描述】:

我想订阅服务器发送的事件(参见下面的示例)

在客户端浏览器和 java 服务器之间是另一个使用 compress nodejs 中间件的应用程序。

当我尝试通过浏览器访问此服务器发送的事件时,此中间件会导致 ERR_INCOMPLETE_CHUNKED_ENCODING。

为了让它运行起来,我应该做一个 .flush() ,这里有更详细的描述(对于 nodejs 应用程序):https://github.com/expressjs/compression/blob/master/README.md#server-sent-events

我的代码目前如下所示:

@RequestMapping(method = RequestMethod.GET, value = "/fluxTest", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
public Flux<String> getFluxStream(HttpServletRequest request) {
    String[] randomNames = { "Steve", "Dirk", "Jens", "Rene"};

    return Flux.interval(Duration.ofSeconds(1))
               .map(sequence -> "{\"name\": \"" + randomNames[new Random().nextInt(randomNames.length)] + "\"}");
}

如何在 java 中触发 .flush(),如 nodejs 压缩文档中所述?

谢谢!!!

【问题讨论】:

    标签: java spring express compression flux


    【解决方案1】:

    如果在响应中添加 header("Cache-Control", "no-transform"),则压缩库不会转换正文。我知道这不是解决这个问题 问题,但仍然是一种临时解决方法。

    【讨论】:

      猜你喜欢
      • 2020-10-16
      • 2019-01-07
      • 1970-01-01
      • 2021-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多