Как показать отправку ответа в виде фрагментов на интерфейс из Nodejs с помощью Express?

#node.js #axios #callback #stream #progress-bar

Вопрос:

Я пытаюсь создать функциональность, в которой несколько вещей происходят в одном запросе API.

Шаг 1. Файл добавляется в корзину S3

Шаг 2. Файл кодируется

Шаг 3. Обновите несколько записей в базе данных

Я могу отправить ответ на интерфейс после завершения всех 3 шагов.

Но мне нужно показать индикатор выполнения на шаге 1 в начале

Пользовательские сообщения загрузчика во время шага 2

Всплывающее окно «Задание выполнено» после шага 3.

Как мне постоянно прослушивать события сервера или обратные вызовы?

Я использую VueJS в интерфейсе для выполнения запроса API с помощью Axios.

Я использую NodeJS с express в бэкэнде.

Я посмотрел на пакет npm progress-stream, но обнаружил, что он сбивает с толку в том, как его использовать с express.

Как создать событие прогресса с пользовательским статусом «Ожидание», «В процессе» (процент выполнения), «Завершено»?

Может ли кто-нибудь направить меня в правильном направлении?

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

1. Одним из подходов может быть использование веб-сокета (сокет. ввод-вывод) соединение. Для каждого шага вы будете уведомлять пользовательский интерфейс/интерфейс сообщением сокета. Возможно, вы не будете поддерживать http-соединение так долго.

2. @ShamsNahid Я чувствовал, что сокеты будут излишними, не могли бы вы предложить какую-либо другую альтернативу?

3. Без веб-сокета мы не можем напрямую отправлять ответ в пользовательский интерфейс. Таким образом, используя http-соединение, подход может заключаться в непрерывном вызове API с задержкой в несколько секунд и соответствующей отправке ответа. Например, выполните вызов с интервалом в 2 секунды и повторяйте его до тех пор, пока операция не будет завершена.