如何通过ajax

时间:2016-01-27 10:38:04

标签: javascript node.js express socket.io

我是node.js的新手,这是我的问题:

例如:我获得了Web应用程序,并且从该应用程序中我有一个按钮并且在按钮上单击我想要运行节点控制台命令(例如:node socket.io)。

所以:

$( ".button" ).on( "click", function() {
   //run ajax to node with command for example "node socket.io"
 });

所以在这个例子中我想从web javascript文件启动socket.io。怎么做 ?我知道它的基本问题,但我想知道如何做或者甚至可能。

修改

但是是否可以使用该节点命令向node.js运行ajax请求,然后启动它(" node socket.io")?

我问这个是因为我想从web应用程序启动和停止socket.io,而不是直接从控制台命令启动。

1 个答案:

答案 0 :(得分:3)

您需要这样的快速路线:

...

var exec = require('child_process').exec;

app.post('/exec', function(req, res) {
  var cmd = req.body.command;

  exec(cmd, function(error, stdout, stderr) {
    if (stderr || error) {
      res.json({
        success: false,
        error: stderr || error,
        command: cmd,
        result: null
      })
    } else {
      res.json({
        success: true,
        error: null,
        command: cmd,
        result: stdout
      })
    }
  })


})

...

note :stderr和stdout为buffers

然后,你需要POST你的命令(使用AJAX或表格)到/exec。哪个会给你一个回复,如:

成功:

{
  success: true,
  error: null,
  command: "ls",
  result: "app.js bin node_modules package.json public routes views "
}

失败:

{
    success: false,
    error: "/bin/sh: foobar: command not found ",
    command: "foobar",
    result: null
}

您需要 非常 小心安全性,因为您打开了对系统控制台的访问权限。