SSE / EventSource: как различить таймауты и другие угловые ошибки - PullRequest
0 голосов
/ 04 февраля 2019

Я использую 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);
    }

Мне нужно сделать определенные вещи по тайм-ауту и ​​закрыть соединение при любой другой ошибке.как мне этого добиться?

...