Я использую SSE для отправки уведомлений с весеннего загрузочного сервера на угловой клиент.Мой SseEmitter время ожидания каждые 10 минут (по соображениям безопасности).Однако я не могу провести различие между этим тайм-аутом и другими ошибками, так как все ошибки и тайм-ауты получены в eventSource.onError
слушателе событий. Есть ли способ отличить ошибки от времени ожидания в клиенте? .Ниже мой код:
PS Это то, что я использую для EventSource https://www.npmjs.com/package/event-source-polyfill
Источник угловых событий:
const eventSource = new EventSourcePolyfill(AppUrl.NEW_NOTIFICATIONS, { headers: { Authorization: 'Bearer ' + this._authService.getAccessToken() } });
eventSource.onmessage = (message) => {
console.log('message received');
};
eventSource.onopen = (a) => {
console.log('Connection Open');
};
eventSource.onerror = (e) => {
eventSource.close();
console.log('Connection closed');
};
eventSource.addEventListener('heartBeat', message => {
console.log('keepalive message');
});
Мой код контроллера:
@RequestMapping(value = "/notifications", method = RequestMethod.GET)
public ResponseEntity<SseEmitter> streamNotification(
@RequestParam("id") String id) {
final SseEmitter emitter = new SseEmitter(600000L);
service.addEventToStore(credentialProvider.getUserId(), id, emitter);
return ResponseEntity.ok()
.headers(responseHeaders).body(emitter);
}
Мне нужно сделать определенные вещи по тайм-ауту и закрыть соединение при любой другой ошибке.как мне этого добиться?