Чтение большого ответа по частям по мере его поступления

#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 тыс. запросов), чтобы получить все фрагменты, похоже, мне не хватает какого-то простого и простого способа.