Как предотвратить «net :: ERR_SPDY_PROTOCOL_ERROR 200» при подключении источника события к функции Java, которая создает и возвращает SSEEmitter? - PullRequest
0 голосов
/ 03 января 2019

Я использую EventSource в Javascript для подключения к конечной точке Java Spring Boot.

Это прекрасно работает, когда я подключаю приложение к своему локальному java-серверу, но при подключении к моему dev-серверу я получаю сеть:: ERR_SPDY_PROTOCOL_ERROR 200 каждые 33 секунды или около того.

У меня установлена ​​последняя версия Chrome (v71).

Что я делаю не так?

Эта функция вмой загрузочный сервер Java Spring:

@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;
}

1 Ответ

0 голосов
/ 20 февраля 2019

Оказывается, проблема связана с тайм-аутом запроса к серверу. Наши серверы имели ограничение в 30 секунд для отправки ответа на запрос. Но запрос источника события должен оставаться в живых дольше.

Изменение ограничения времени ожидания сервера устранило проблему.

...