gpt4 book ai didi

node.js - Nodejs - 将输出流式传输到浏览器

转载 作者:搜寻专家 更新时间:2023-10-31 22:57:24 25 4
gpt4 key购买 nike

var http = require("http");
var sys = require('sys')
var filename = process.ARGV[2];
var exec = require('child_process').exec;
var com = exec('uptime');


http.createServer(function(req,res){
res.writeHead(200,{"Content-Type": "text/plain"});
com.on("output", function (data) {
res.write(data, encoding='utf8');
});
}).listen(8000);
sys.puts('Node server running')

如何将数据流式传输到浏览器?

最佳答案

如果您只是笼统地问出了什么问题,主要有两件事:

  1. 您错误地使用了 child_process.exec()
  2. 您从未调用过 res.end()

您正在寻找的是更像这样的东西:

var http = require("http");
var exec = require('child_process').exec;

http.createServer(function(req, res) {
exec('uptime', function(err, stdout, stderr) {
if (err) {
res.writeHead(500, {"Content-Type": "text/plain"});
res.end(stderr);
}
else {
res.writeHead(200,{"Content-Type": "text/plain"});
res.end(stdout);
}
});
}).listen(8000);
console.log('Node server running');

请注意,就通常使用的词而言,这实际上并不需要“流”。如果你有一个长时间运行的进程,以至于你不想在它完成之前在内存中缓冲 stdout(或者如果你正在向浏览器发送文件等),那么你会想要“流式传输”输出。您将使用 child_process.spawn 来启动进程,立即写入 HTTP header ,然后每当在 stdout 上触发“数据”事件时,您将立即将数据写入 HTTP 流。在“退出”事件中,您将在流上调用 end 以终止它。

关于node.js - Nodejs - 将输出流式传输到浏览器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3932980/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com