我已经为我的 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;
}
Run Code Online (Sandbox Code Playgroud)
以及处理请求的前端代码:
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); …Run Code Online (Sandbox Code Playgroud)