0

我有一个产生大量输出的后台进程。我想在它们可用时将输出发送给客户端。我的期望是客户端将发送一个 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返回给客户端,并且当数据在服务器端写入此流时,客户端会在其端接收它吗?

4

0 回答 0