我在Javascript中使用EventSource连接到Java Spring Boot端点。
当我将应用程序连接到我的localhost java服务器但在连接到我的开发服务器时,我每隔33秒左右就会收到一个net :: ERR_SPDY_PROTOCOL_ERROR 200。
我有最新版本的Chrome(v71)。
我究竟做错了什么?
这是我的Java Spring Boot服务器中的函数:
@CrossOrigin
@RequestMapping(path = {"/sse"})
public SseEmitter handleSse(@RequestParam String callId) {
SseEmitter emitter = new SseEmitter(7200000L);
this.emitters.put(callId, emitter);
emitter.onCompletion(() -> this.emitters.remove(callId));
emitter.onTimeout(() -> this.emitters.remove(callId));
return emitter;
}
事实证明问题在于服务器请求超时。我们的服务器对响应发送到请求的时间限制为30秒。但是事件源请求需要保持更长时间。
更改服务器超时限制解决了问题。