Javascript NodeJS Fork-每次子流程发送换行符时都进行反应
我正在尝试在Windows7上编写一个带有NodeJS的函数,如果这会产生影响,那么它将侦听子进程,并且在通过子进程发送每个换行之后,在Node中处理它。看看这个例子:Javascript NodeJS Fork-每次子流程发送换行符时都进行反应,javascript,ajax,node.js,socket.io,Javascript,Ajax,Node.js,Socket.io,我正在尝试在Windows7上编写一个带有NodeJS的函数,如果这会产生影响,那么它将侦听子进程,并且在通过子进程发送每个换行之后,在Node中处理它。看看这个例子: var express = require('express'); var app = express(); app.listen(3000); app.get('/', function(request, response) { var exec = require('child_process').exec,
var express = require('express');
var app = express();
app.listen(3000);
app.get('/', function(request, response) {
var exec = require('child_process').exec,
child, out = "NA";
child = exec('java -jar misc.jar',
function (error, stdout, stderr) {
if(stdout!==''){
out = '---------stdout: ---------\n' + stdout;
}
if(stderr!==''){
out = '---------stderr: ---------\n' + stderr;
}
if (error !== null) {
out = '---------exec error: ---------\n[' + error+']';
}
response.send(out);
});
});
可以想象,函数error stdout,stderr只有在我的子进程终止后才会被调用
相反,我希望每当一行新的文本从stdout或stderr中出现时调用该函数。此时,我想使用AJAX/Socket.IO动态更新面向用户的html页面。如果你也能帮我指出这个方向,肯定会有额外的积分 好的,我意识到我需要使用spawn而不是exec来执行此操作:
var express = require('express');
var app = express();
app.listen(3000);
app.get('/', function(request, response) {
response.send("Hey");
var spawn = require('child_process').spawn;
var java = spawn('java', ['-jar', 'misc.jar']);
java.stdout.on('data', function(data) {
console.log(data);
});
});
但是,我注意到express with response不允许我推送数据。所以,我需要找出问题的最后一部分,因为我相信要做到这一点,我需要使用AJAX/Socket.IO