我正在与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端点?
答案 0 :(得分:0)
EventSource
,通常,服务器发送事件是单向的,从服务器到客户端(see reference)。
如果您希望将数据从浏览器发布到服务器,则任何常规的AJAX POST都可以使用。
请注意,在当前端点设置的情况下,浏览器应发送带有JSON正文的POST请求,然后接收无限的SSE流。
如果您希望有双向消息流,那么WebSockets是这里的答案。 Spring WebFlux当前支持原始WebSocket,因此目前尚无Sock.js / STOMP抽象。