服务器发送事件而不是异步发送事件 - Spring MVC

问题描述 投票:0回答:1

我正在构建一个 API,利用 Spring MVC 中的 SSE 来传输数据。我尝试使用 Spring WebFlux 构建 SSE,并且能够让它工作并异步传输数据。但是当我尝试在 Spring MVC 中使用 SseEmitter 时,我无法传输数据。

数据在最后一个事件结束时立即发送,这违背了 SSE API 的要点。我尝试使用在线提供的示例使用简单的 SSE API,但无法让它们工作。

 @GetMapping(value = "/test", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
    public SseEmitter testSSe(){
        SseEmitter emitter = new SseEmitter();
        for(int i = 1; i < 5; i++)
        {
            int iInLoop = i;
            try {
                Thread.sleep(iInLoop * 1000);
                emitter.send(iInLoop );
            }catch (Exception e){
                e.printStackTrace();
            }
        }
        emitter.complete();
        return emitter;
    }

All of the events are emitted at the same time.

所有事件同时发出。一旦事件由发射器发送,如何让 SSE 立即发送事件?

java spring spring-mvc server-sent-events
1个回答
0
投票

请求线程或主线程不应该被阻塞。它必须能够首先返回发射器才能发送事件。

因此,应该从另一个线程发送事件,同时应允许主(请求)线程完成返回发射器。

© www.soinside.com 2019 - 2024. All rights reserved.