我已经为我的Spring Boot应用程序实现了一个端点,该端点返回服务器发送事件,我向其中发送了一些简单的字符串。当对此端点发出请求时,它会被打开,然后出现错误。我发送的字符串似乎没有到达前端。
以下是控制器代码:
控制台记录以下内容:
活动已经开始,但立即报错。
以下是控制器代码:
@RequestMapping("/sseTest")
@Async
public ResponseBodyEmitter handleRequest() {
final SseEmitter emitter = new SseEmitter();
ExecutorService service = Executors.newSingleThreadExecutor();
service.execute(() -> {
for (int i = 0; i < 500; i++) {
try {
emitter.send(123 , MediaType.TEXT_PLAIN);
Thread.sleep(200);
} catch (Exception e) {
e.printStackTrace();
emitter.completeWithError(e);
return;
}
}
emitter.complete();
});
return emitter;
}
处理请求的前端代码:
const eventSource = new EventSource('http://localhost:8080/sseTest');
eventSource.onopen = e => console.log('open');
eventSource.onerror = e => {
if (e.readyState == EventSource.CLOSED) {
console.log('close');
} else {
console.log(e);
}
};
eventSource.onmessage = event => {
console.log(event.data);
};
控制台记录以下内容:
open
Event {type: "error"}
活动已经开始,但立即报错。