SSE/EventSource: как различить таймауты и другие угловые ошибки
Я использую 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);
}
Мне нужно сделать определенные вещи по таймауту и закрыть соединение при любой другой ошибке. как мне этого добиться?