我熟悉 Spring Flux + SSE,尝试编写一些流数据的代码。
这里有两个问题:
- 当我在 Chrome 中发出请求时,它有一段时间没有关闭连接(加载圈正在旋转),但我使用
Flux.fromIterable
了在数组末尾发出完整信号的常规。 它会关闭一段时间(约 1 分钟)。可能它在某个地方超时。
OnComplete
只有在事件触发时才应关闭响应。@Controller("/") @Validated public class HelloController { @Produces(MediaType.TEXT_EVENT_STREAM) // add 'application/stream+json' @Get("/hello/{name}") public Flux<Hello> hello(@NotBlank String name) { List<Hello> list = new ArrayList<>(); list.add(new Hello("test1", 1)); list.add(new Hello("test2", 2)); return Flux.fromIterable(list).doOnComplete(() -> { System.out.println("response should be closed here!"); }); } }
-另外请添加对application/stream+json
内容类型的支持
- 并通过 Flux 支持客户端的服务器端事件。