如何将子进程的无缓冲输出通过管道传输到 HTTP.ServerResponse?
下面的 Node.js 代码适用于缓冲输出,但不适用于无缓冲输出。
var http = require('http'),
spawn = require('child_process').spawn;
http.createServer(function (req, res) {
req.on('data', function (data) {
var ping = spawn("ping", ["127.0.0.1"]);
ping.stdout.pipe(res);
ping.stderr.pipe(res);
req.connection.on('end', function() {
ping.kill();
});
});
});
这是来自的输出ping 127.0.0.1
:
ping 127.0.0.1
PING 127.0.0.1 (127.0.0.1): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1
由于ping
将请求超时作为非缓冲数据写入 STDOUT,因此上面的代码仅在ping
成功时才有效。
我正在使用 Node.js v0.8.19。