如何从节点的process.stdout.on流中全局访问数据?

时间:2016-04-07 18:52:53

标签: node.js sockets

这是我的服务器代码中的一个js函数,它有一个从python脚本传输数据的子进程:

    var dataString = '';
sampleFunc = function(){
    var spawn = require('child_process').spawn,
        py = spawn('python', ['F:/sample.py']),
        data = [1,2,3,4,5,6,7,8,9];

    py.stdout.on('data', function(data){
            console.log("before data write");
              dataString += data.toString();
            });

        py.stdout.on('end', function(){
            console.log("successful");
            dataStr = dataString;
              console.log(dataString);
            });

        py.stdin.write(JSON.stringify(data));
        console.log("inside stdin");    
        py.stdin.end();

};

然后我使用socket.io将此数据发送到客户端。但是datadtr在stdout之外总是空的。

io.on('connection', function(socket){
sampleFunc();
console.log(dataStr);
console.log('a user connected');

});

我只需要将数据放入流中:

py.stdout.on('data', function(data){
                console.log("before data write");
                  dataString += data.toString();
                });

并且能够在套接字代码中访问它。任何帮助解决这个问题都将非常感激......

1 个答案:

答案 0 :(得分:0)

你只需要从套接字发出数据......?

py.stdout.on('data', function(data){
                console.log("before data write");
                  dataString += data.toString();
                  io.emit(dataString); 
                });