Если Spring SseEmitter.complete () вызвать переподключение EventSource - как закрыть соединение на стороне сервера - PullRequest
1 голос
/ 21 марта 2019

Я пытаюсь настроить Spring SseEmitter для отправки последовательности обновлений статуса запущенного задания.Кажется, он работает, но:

Всякий раз, когда я вызываю emitter.complete() в коде моего сервера Java, клиент javascript EventSource вызывает зарегистрированную функцию onerror, а затем снова вызывает мою конечную точку Java с новым подключением,Это происходит как в Firefox, так и в Chrome.

Возможно, я могу отправить явное сообщение об окончании данных из Java, а затем обнаружить его и вызвать eventSource.close() на клиенте, но есть ли лучший способ?

Какова цель emitter.complete() в этом случае?

Кроме того, если мне всегда придется разорвать соединение на стороне клиента, то я думаю, что каждое соединение на стороне сервера будетпрекращается либо из-за таймаута, либо из-за ошибки записи, и в этом случае я, вероятно, хочу вручную отправлять какое-то сердцебиение каждые несколько секунд?

Такое ощущение, что я что-то упускаю, если мне приходится делатьвсе это.

...