NodeJS Fork-每次子流程发送新行时都进行React
NodeJS Fork - React each time a newline is sent by subprocess
我正试图用NodeJS(如果有区别的话,在Windows7上)编写一个函数,该函数将侦听子进程,并在通过子进程发送每条新行后,在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);
});
});
可以想象,function (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);
});
});
然而,我注意到用"回应"来表达是不允许我推送数据的。因此,我需要弄清楚我问题的最后一部分,因为我认为要做到这一点,我需要使用AJAX/Socket.IO
相关文章:
- 如何删除父表行时;删除“;在React JS中单击按钮
- NodeJS Fork-每次子流程发送新行时都进行React
- 当数组达到大于 x 的数字时,继续新行
- 如何在javascript中每次添加新行时都增加ordre值
- 在Spring.message属性中添加新行时出错
- 当上一行/当前行被填充时,将新行添加到HTML表中
- 当新行添加到表中时,使用AJAX更新页面
- 如何在使用 ng-repeat 显示表数据时放置条件新行
- 将新行添加到数据库时的 Javascript 警报
- 当单击在表中创建新行时,它只会短暂出现
- 当添加新行时,输入名称将增加1
- 添加新行时的日期增量
- 当添加新行时,总持续时间值应该会更改,但不会更改;t
- 在向表中添加新行时进行拦截
- 添加新行时,jQuery代码不起作用
- 在jQuery中添加新行时,禁用其他选择框的选择选项
- Jquery在创建新行时不向最后一行添加索引
- 在dojo.gridX中添加新行时如何聚焦第二个Cell
- 在contenteditable中添加新行时字数错误
- 在添加具有模态形式的新行时,使用jqGrid添加附加参数以发布数据