2013-12-15 37 views
0

如何從一個node.js腳本與多個控制檯窗口進行交互?如何與多個控制檯窗口交互?

到目前爲止,我已經研究了一下,沒有發現任何涵蓋我的情況。

我想要做到的是有一個主控制檯窗口,它讀取我的投入,

1. action#1 
2. action#2 

> do 1 // select action 

,它將其輸出重定向到命名爲Logger另一個控制檯窗口,它顯示了行動的stdout用戶選擇,但保持主要「選擇操作」控制檯窗口清潔。

+1

執行此操作的「標準」方式可能是登錄到文件或stderr,並擁有另一個控制檯窗口,您可以自行打開該文件的尾部。 –

回答

0

嗯,我設法找到一個方法,因爲我想留在node.js一路。

start.js

var cp = require("child_process"); 
cp.exec('start "Logger" cmd /K node logger.js',[],{}); 
cp.exec("start cmd /K node startAdminInterface.js",[],{}); 
setTimeout(function(){process.exit(0);},2000); 

logger.js

var net = require('net'); 
net.createServer(function (socket) { 
    socket.on('data',function(d){ 
    console.log(": "+d.toString("utf8")); 
    }); 
    socket.on('error',function(err){ 
    console.log("- An error occured : "+err.message); 
    }); 
}).listen(9999); 

startAdminInterface.js

var net = require("net"); 
var logger = net.connect(9999); 
var readline = require('readline'), 
    rl = readline.createInterface(process.stdin,process.stdout); 
rl.setPrompt('> '); 
rl.prompt(); 
rl.on('line', function(line) { 
    logger.write(line); 
    rl.prompt(); 
}).on('close', function() { 
    process.exit(0); 
}); 

底部,它的解決方案不完全是我之後,把我看到的潛力,在logger.js它可以從多個來源聽,這是我正在建設的應用程序的巨大優勢。