【发布时间】:2018-05-01 12:43:25
【问题描述】:
我已经为我的 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"}
事件已打开,但随后立即报告错误。
【问题讨论】:
标签: javascript java spring spring-boot server-sent-events