用于SpringWebFlux的POST数据的JavaScript客户端

时间:2018-06-19 13:58:25

标签: server-sent-events spring-webflux eventsource

我正在与Spring WebFlux一起玩耍,以尝试使用反应性API,但是我正在努力寻找从JavaScript EventSource API向WebFlux端点“ POST”数据的解决方案。

我的端点看起来像这样:

@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到达端点,但是用于获取eventSource的JavaScript EventSource api不允许发送POST正文。发送的请求始终是GET请求。

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

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

1 个答案:

答案 0 :(得分:0)

EventSource,通常,服务器发送事件是单向的,从服务器到客户端(see reference)。

如果您希望将数据从浏览器发布到服务器,则任何常规的AJAX POST都可以使用。

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

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