我有一个后台进程,可以生成大量输出。我希望将输出发送到客户端,因为它们可用。我的期望是客户端将发送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
的形式返回给客户端,并将数据写入 在服务器端的这个流,客户端将在其端收到它?