JavaScript 客户端,用于 SpringWebFlux 到 POST 数据



我正在使用Spring WebFlux来体验响应式API,但是我正在努力从JavaScript EventSource API找到将数据"POST"到WebFlux端点的解决方案。

我的端点如下所示:

@PostMapping(value="/start/{id}", produces = MediaType.TEXT_EVENT_STREAM_VALUE , consumes=MediaType.APPLICATION_JSON_VALUE)
public Flux<Integer> startProcessing(@PathVariable("id") Long id, @RequestBody ProcessDetails process)

而且我可以很容易地使用POSTMAN到达端点,但是用于获取事件源的JavaScript EventSource api不允许发送POST正文。发送的请求始终是 GET 请求。

<script>    
var source = new EventSource("/start/34");
...

如何从浏览器将内容发布到 WebFlux 端点?

EventSource通常,服务器发送事件是单向的,从服务器到客户端(请参阅参考(。

如果您想将数据从浏览器POST到服务器,任何常规的AJAX POST都可以工作。

请注意,使用当前的终端节点设置,浏览器应发送带有 JSON 正文的 POST 请求,然后接收无限的 SSE 流。

如果您希望拥有双向消息流,那么 WebSockets 就是这里的答案。Spring WebFlux 目前支持原始 WebSockets,因此目前没有 Sock.js/STOMP 抽象可用。