Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/475.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript NodeJS Fork-每次子流程发送换行符时都进行反应_Javascript_Ajax_Node.js_Socket.io - Fatal编程技术网

Javascript NodeJS Fork-每次子流程发送换行符时都进行反应

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,

我正在尝试在Windows7上编写一个带有NodeJS的函数,如果这会产生影响,那么它将侦听子进程,并且在通过子进程发送每个换行之后,在Node中处理它。看看这个例子:

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