2013-10-24 46 views
1

我试图用终端命令行访问python shell来构建一个web应用程序,但是我在使用流时遇到了一些困难。使用websocket节点将命令流式传输到python shell

我有一个node.js/websocket服务器,它将传入的命令发送到python进程的标准输入(下面的代码),这似乎工作正常,但由于某种原因,每个传入命令都会发送多个响应消息。例如,如果发送命令'hello world',则会将多个'hello world'发送回客户端(以及通过stderr的多个>>>)。我非常难过......我确信只有一个命令来自客户端,所以为什么我会收到很多回应?

var python = spawn('python', ['-i']); 
s.on('run', function(input) { 
    console.log('Running command: ' + input.command); 
    python.stdin.write(input.command + '\n'); 
    python.stdout.on('data', function(data) {                             
    var output = '' + data; 
    s.emit('response', { 
     output: output 
    }); 
    console.log('python stdout: ' + output); 
    }); 
    python.stderr.on('data', function(data) { 
    var output = '' + data; 
    s.emit('response', { 
     error: output 
    }); 
    console.log('python stderr: ' + output); 
    }); 
}); 

回答

0

因为你添加一个Event Listener每次用户(客户)发出run事件。经过前后的 。 10 run事件,它将有10个事件侦听器正在侦听标准输出和标准错误事件。

你应该将stdout.on(..)stderr.on(..).on('run',..)

+0

哦咄外面,谢谢! – user1027169

相关问题