504 Время ожидания шлюза 240000 мс при использовании EventSource

#node.js #azure #spring-boot #websocket

#node.js #azure #весенняя загрузка #websocket

Вопрос:

Я использую эту node.js библиотеку для того, чтобы Reconnect получить EventSource ответ на случай, если она закроется.

Проблема

Мое веб-приложение размещено в Microsoft Azure, в котором я включил Web Sockets

После 240000ms закрытия объекта источника события с ошибкой ожидания шлюза 504.

введите описание изображения здесь

Архитектура веб-приложения:

Проект разработан с использованием Spring boot фреймворка, и это одна из моих конечных точек потоковой передачи

 @GetMapping(path = "/completed/receive", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
    public Flux<Event> receiveCompleted() {
    
            return Flux.create(sink -> {
            completedProcessor.register(sink::next);
        });
    }
  

Заголовки, которые я пробовал, не сработали

  • Connection : Keep-Alive
  • Keep - Alive: timeout=500000

Включить веб-сокеты из Microsoft Azure

введите описание изображения здесь

Как я прослушиваю конечную точку с помощью JS

 var eventSourceCompleted;
        
eventSourceCompleted =  new ReconnectingEventSource("/api/completed/receive");

        

// Receive messages
eventSourceCompleted.onmessage = function (evt) {
//Do Something

};
eventSourceCompleted.onerror = function (e) {
      console.log("EventSource failed: "   e);
};
        
  

Что бы я ни пытался, через 240 тыс. мс соединение закрывается, как это может быть?

Комментарии:

1. Ваш вопрос очень сложный. У меня есть две идеи, мы можем обратиться к ним вместе.

2. 1. Прежде всего, рекомендуется добавить журнал в программу, проверить состояние выполнения программы на портале и журнал до и после сообщения об ошибке.

3. 2. Рекомендуется размещать выпуски на github и описывать конкретное явление вашей проблемы. Возможно, в их текущей версии есть такая ошибка.

4. Я лично считаю, что это не проблема, связанная с библиотекой, new EventSource() in <script> имеет это странное поведение само по себе, new ReconnectingEventSource() используется new EventSource() в исходном коде. Итог, если new EventSource() не удастся повторно подключиться, то эта библиотека также не будет работать. В localhost это работает, в Azure — нет.

5. Проверьте журнал на портале, видите ли вы какие-либо сообщения об ошибках?