0

我想要做的是从一个正在写入标准输出的 scala 文件设置一个流,并将该输出通过管道传输到 node.js。例如写作.scala | node index.js 然后,在 node.js 中,我想读取每一行,并将其发送到客户端。有谁知道我该怎么做?有没有更好的方法来完成同样的事情?

4

2 回答 2

4

最简单的方法是scala使用函数从节点应用程序中调用程序child_process.exec

var express = require('express');
var exec = require('child_process').exec;
var app = express();

app.get('/', function(req, res){
  exec('your scala program',
    function (error, stdout, stderr) {
      res.send(stdout);
  });
});

app.listen(3000);

如果您不关心错误,您可以使用它piping来加速您的应用程序。在这种情况下node,将在调用您的 scala 程序后立即开始向客户端发送数据。我不太确定语法,但应该看起来像这样:

var express = require('express');
var exec = require('child_process').exec;
var app = express();

app.get('/', function(req, res){
  var child = exec('your scala program');
  child.stdout.pipe(res);
});

app.listen(3000);
于 2013-04-07T20:26:21.943 回答
1

Leonids 的响应是 98% 正确接受,因为res它是一个可写流并且stdout是一个可读流,所以代码应该这样写:

...
exec('your scala program',
  function (error, stdout, stderr) {
    stdout.pipe(res);
});
...
于 2013-04-07T22:43:20.907 回答