如何用 Flux (Reactor) 冲洗?
Posted
技术标签:
【中文标题】如何用 Flux (Reactor) 冲洗?【英文标题】:How to flush with 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 压缩文档中所述?
谢谢!!!
【问题讨论】:
【参考方案1】:如果在响应中添加 header("Cache-Control", "no-transform"),则压缩库不会转换正文。我知道这不是解决这个问题 问题,但仍然是一种临时解决方法。
【讨论】:
以上是关于如何用 Flux (Reactor) 冲洗?的主要内容,如果未能解决你的问题,请参考以下文章