http.listen()在运行时接受终端命令

时间:2015-04-08 00:12:09

标签: javascript node.js

我的脚本中有以下内容:

var server = http.createServer(handleRequest);
server.listen(3000, function(err){
    console.log(err || 'Server listening on 3000');
});

当我在终端中执行脚本时:

nodejs file.js

它以无限循环运行,直到我按 Ctrl + C 。是否可以在进程运行时输入自定义命令,因为它不会返回到默认终端?我想在我的应用程序中添加一些自定义命令,例如(但不限于):

  • 停止
  • 重载
  • 重新开始

1 个答案:

答案 0 :(得分:3)

您可以使用process.stdin信息流(在换行线上触发data事件):

var http = require('http');

var server = http.createServer(function (err, req, res) {
  // ...
});
server.listen(3000, function(err){
    console.log(err || 'Server listening on 3000');
});

var commands = {
  stop: function () {
    console.log('> stop');
  },
  start: function () {
    console.log('> start')
  },
  restart: function () {
    console.log('> restart')
  }
}

process.stdin.on('data', function (data) {
  data = (data + '').trim().toLowerCase();
  if (data in commands) {
    commands[data]();
  }
});

仅供参考nodemon执行类似操作(在输入rs时重新启动服务器source