【发布时间】:2021-10-23 21:14:52
【问题描述】:
我有一个显示流内容的应用程序。这个流是通过 Spring Rest 提供的。流的内容很少从另一个线程推送。
这已经有效,但我唯一遇到的问题是“刷新”流。目前我只在流关闭时才能看到内容,但我想实时显示内容。
我通过 chrome/firefox 调用端点对此进行了测试,并且(完整)内容仅在流关闭后出现(页面不再加载)。同样在我的应用程序中,内容仅在最后显示,而不是同时显示。
@GetMapping("/session")
public ResponseEntity<InputStreamResource> openSession(){
var inLog = new PipedInputStream();
var logWritable = new PipedOutputStream(inLog);
spawnThreadAndPushMessages(logWritable);
return ResponseEntity.ok()
.contentType(MediaType.TEXT_PLAIN)
.body(new InputStreamResource(inLog));
}
我正在像这样写入 PipedOutputStream (logWritable):
spawnThreadAndPushMessages(OutputStream logWritable){
//thread stuff etc omitted for clarity
logWritable.write("test".getBytes());
logWritable.flush();
}
这里出了什么问题?
【问题讨论】: