在生成响应时将进程输出写入响应

时间:2017-07-16 03:36:13

标签: node.js sockets node-streams

我有一个后台进程,可以生成大量输出。我希望将输出发送到客户端,因为它们可用。我的期望是客户端将发送HTTP GET / POST请求,服务器打开连接并keeps it alive,然后服务器在数据可用时保持流数据。

真实世界示例:当您在AWS / Heroku / GoogleAppEngine中运行测试或shell命令时,它会实时显示输出,就像命令在我的本地计算机上运行一样。 他们是如何做到的?


服务器:在此示例服务器中,该进程每秒生成一条消息。

function handleRequest (request, response) {
  for (let i = 0; i < 10; i++) {
    response.write('This is message.' + i)
    require('child_process').execSync("sleep 1")
  }
  response.end()
}


客户端:客户端应该在可用时接收数据,即逐个接收数据。但输出当然是我的预期,一次收集整个数据并发送回客户端。

request.put(formData)
       .on('data', function (data) {
         console.log(data.toString())
       })


  

我对NodeJS很新,但我希望也许我可以回复一些   writable stream的形式返回给客户端,并将数据写入   在服务器端的这个流,客户端将在其端收到它?

0 个答案:

没有答案