#javascript #node.js #xmlhttprequest #response #child-process
#javascript #node.js #xmlhttprequest #ответ #дочерний процесс
Вопрос:
У меня есть js-сервер узла, который выполняет exe-файл, который выводит данные по частям:
function requestHandler(request, response)
{
childproc = process.spawn("exefile");
childproc.stdout.on("data", (data) =>
{
response.write(data);
});
childproc.on("exit", (code) =>
{
response.end();
});
}
И его получение клиентом javascript:
const xhr = new XMLHttpRequest();
...
xhr.send(...)
xhr.onreadystatechange = function ()
{
if(xhr.readyState == XMLHttpRequest.LOADING)
{
// I can see this being called as and when the server is writing the data,
// but ofcourse since the response has not ended, I get null when I try
// xhr.response;
}
if (xhr.readyState == XMLHttpRequest.DONE)
{
response = xhr.response; // its an array buffer, by the way
}
}
Есть ли хороший способ получить данные по мере их поступления, не дожидаясь завершения всего процесса? Один из способов — продолжать завершать ответ после каждого фрагмента на стороне сервера, но тогда мне придется инициировать несколько запросов (до 10 тыс. запросов), чтобы получить все фрагменты, похоже, мне не хватает какого-то простого и простого способа.