How can I pass unbuffered output from a child process to HTTP.ServerResponse?
The following is Node.js code that works for buffered output, but not for unbuffered output.
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(); }); }); });
Here is the result from 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
Since ping writes request timeouts to STDOUT as unbuffered data, the above code only works if ping successful.
I am using Node.js v0.8.19.
source share