【发布时间】:2018-12-24 00:02:31
【问题描述】:
我有下面的事件流代码块:
@RequestMapping(value = "/stream/{columnId}/data", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
@ResponseBody
public Flux<Activity> streamingData(@PathVariable String columnId, HttpSession httpSession) {
try {
ColumnObject columnObject = streamHelper.findColumnObjectInListById(columnId);
return streamHelper.getStreamData(httpSession.getId(), columnObject);
} catch (Exception e) {
...
}
}
通过endpoint创建6列后,spring server会将所有后续请求置于pending状态。
(例如获取、发布方法)
@RequestMapping(value = "/session/metrics", method = RequestMethod.GET)
public ResponseEntity<?> keepSessionAliveMetrics(HttpSession httpSession) {
return new ResponseEntity<Void>(HttpStatus.OK); // STATE ONLY PENDING
}
【问题讨论】:
-
这是一个硬浏览器限制。见stackoverflow.com/questions/985431/…。 Spring 在这里什么也没做,它是你的浏览器。
-
感谢您的评论。我明白。我的朋友@M.Deinum,您如何提出解决方案
-
修复您的软件/找到不同的方法。浏览器根本无法处理更多请求(甚至每个浏览器都不同)。
标签: spring-boot server-sent-events spring-webflux project-reactor