В настоящее время я хочу настроить конечную точку, которая принимает запрос и возвращает данные ответа с шагом по мере их загрузки.
Применение этого в том, что при одной загрузке данных я хотел бы рассчитать количество различных метрик для этих данных. Поскольку каждая метрика рассчитывается асинхронно, я хочу вернуть значение этой метрики во внешний интерфейс для визуализации.
Для тестирования мой контроллер выглядит следующим образом, пытаясь использовать res.write
uploadData = (req, res) => {
res.write("test");
setTimeout(() => {
res.write("test 2");
res.end();
}, 3000);
}
Однако, я думаю, что проблема связана с моей клиентской стороной, которую я пишу в React-Redux, и вызываю этот маршрут через вызов Axios. Насколько я понимаю, это потому, что запрос axios закрывается после получения первого ответа, а соединение не остается открытым. Вот как выглядит мой аксиос-вызов:
axios.post('/api', data)
.then((response) => {
console.log(response);
})
.catch((error) => {
console.log(error);
});
Есть ли простой способ сделать это? Я также думал о потоковой передаче, однако моя проблема с потоковой передачей заключается в том, что я хотел бы, чтобы каждое соединение было прямым и уникальным для клиентов, которые открыты в течение короткого промежутка времени (т. Е. Открываются только при расчете метрик).
Я должен также упомянуть, что загружаемый ресурс - это дБ, и я хотел бы избегать синтаксического анализа и открытия соединения несколько раз в результате нескольких конечных точек.
Заранее спасибо, и, пожалуйста, дайте мне знать, если я могу предоставить больше контекста