SSE 发射器在客户端 onmessage 收到超时

问题描述

我正在编写一个 web 作为客户端,并使用 spring boot 使用 SseEmitter 为 SSE 编写服务器端。但是,当客户端第一次连接到服务器端时,我可以看到调试器在服务器端顺利执行,当返回发射器时,客户端 onmessage 收到超时:消息。如果我做错了什么,可以指导我吗?下面是我的代码,用于服务器端和客户端。

服务器:

@RestController
@RequestMapping("/")
@requiredArgsConstructor(onConstructor = @__(@Autowired))
public class RateDataController {
    
    private final copyOnWriteArrayList<SseEmitter> emitters = new copyOnWriteArrayList<>();

    @GetMapping(value = "/subscribe",produces = MediaType.TEXT_EVENT_STREAM_VALUE)
    public SseEmitter subscribe() {
        SseEmitter emitter = new SseEmitter(Long.MAX_VALUE);
        try {
            emitter.send(emitter.event().name("INIT"));
        } catch (IOException e) {
            e.printstacktrace();
        }
        emitters.add(emitter);
        emitter.onCompletion(() -> emitters.remove(emitter));
        return emitter;
    }

客户端:

eventSource = new EventSource(
                'http://localhost:8080/subscribe')
            eventSource.onopen = (event) => {
                console.log('connection opened')
            }

            eventSource.onmessage = (event) => {
                console.log('result',event.data)
            }

Image on message received from server

任何建议将不胜感激。谢谢,

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...