如何与多个控制台窗口进行交互?

时间:2013-12-15 08:43:38

标签: node.js

如何从一个node.js脚本与多个控制台窗口进行交互?

到目前为止,我已经研究了一下,但没有找到任何可以涵盖我案例的内容。

我想要完成的是拥有一个主控制台窗口,它可以读取我的输入,

1. action#1
2. action#2

> do 1 // select action

它会将其输出重定向到另一个名为Logger的控制台窗口,该窗口显示用户选择的操作的stdout,但保留主要"选择操作"控制台窗口清洁。

1 个答案:

答案 0 :(得分: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它可以从多个来源收听,这对我正在构建的应用程序来说是一个巨大的优势。