1

Python シェルへの端末コマンド ライン アクセスを使用して Web アプリを構築しようとしていますが、ストリームに問題があります。

着信コマンドを Python プロセス (以下のコード) の stdin に送信する node.js/websocket サーバーがありますが、これは正常に動作しているように見えますが、何らかの理由で、着信コマンドごとに複数の応答メッセージが送信されています。たとえば、コマンド'hello world'が送信されると、複数の がクライアントに返されます ( stderr を介し'hello world'た複数のメッセージとともに)。>>>私はかなり困惑しています...クライアントからのコマンドは1つだけであることを確認したのに、なぜ多くの応答が得られるのでしょうか?

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);
  }); 
}); 
4

1 に答える 1

0

ユーザー(クライアント)がイベントを発行するEvent Listenerたびに追加するためです。run例の後。10 個runのイベント 、stdout および stderr のイベントをリッスンする 10 個のイベント リスナーがあります。

あなたは外に移動する必要がstdout.on(..)ありますstderr.on(..).on('run',..)

于 2013-10-24T09:37:28.360 に答える