2013-10-24 105 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

相關問題