Я пытаюсь настроить Spring SseEmitter для отправки последовательности обновлений статуса запущенного задания.Кажется, он работает, но:
Всякий раз, когда я вызываю emitter.complete()
в коде моего сервера Java, клиент javascript EventSource
вызывает зарегистрированную функцию onerror
, а затем снова вызывает мою конечную точку Java с новым подключением,Это происходит как в Firefox, так и в Chrome.
Возможно, я могу отправить явное сообщение об окончании данных из Java, а затем обнаружить его и вызвать eventSource.close()
на клиенте, но есть ли лучший способ?
Какова цель emitter.complete()
в этом случае?
Кроме того, если мне всегда придется разорвать соединение на стороне клиента, то я думаю, что каждое соединение на стороне сервера будетпрекращается либо из-за таймаута, либо из-за ошибки записи, и в этом случае я, вероятно, хочу вручную отправлять какое-то сердцебиение каждые несколько секунд?
Такое ощущение, что я что-то упускаю, если мне приходится делатьвсе это.