node.js如何知道何时退出?

时间:2014-12-01 10:43:37

标签: javascript node.js process exit terminate

我是node.js的新手,我不能轻易谷歌的第一件事就是关注。考虑最典型的node.js示例:

var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
}).listen(1337, '127.0.0.1');
console.log('Server running at http://127.0.0.1:1337/');

node.js如何知道在最后一行执行后它不应该退出?来自.NET我有一个简化的假设,即当所有非后台线程终止时进程退出。由于node.js是单线程的,我相信应该有一些逻辑监视事件订阅,它将决定是否还有可能被触发的事件,否则node.js可以终止。不幸的是,我找不到任何关于此的文档。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:2)

什么?这段代码没有退出!相反,它开始侦听任何http请求。

  

何时退出?

否则,如果没有定义请求处理程序,并且它不再监听任何事件并且所有代码语句都被执行,那么它将退出 为exaple: 只包含一个语句的简单服务器是:

console.log('Hiii');

这将在执行最后一个语句后立即退出,因为我们不希望它监听任何事件。

答案 1 :(得分:2)

如果您来自.NET后台,则可能编写了一些通过IIS托管的ASP.NET Web应用程序。在这种情况下,您的.NET框架会创建一个应用程序线程池来处理传入请求,执行页面并将响应发送回客户端。因此,您的页面执行由.NET框架处理。在整个过程中,IIS继续监听传入的请求并处理对适当的工作者/线程的请求 Node.JS的工作方式与您刚刚指示Node如何处理请求的方式相同。创建服务器时,节点会打开套接字以侦听传入请求。但是,由于没有写入关闭命令,因此您的服务器将继续运行。

要了解节点如何处理/处理请求,请访问
http://strongloop.com/strongblog/node-js-performance-event-loop-monitoring/ http://strongloop.com/strongblog/node-js-event-loop/

要了解如何关闭服务器访问 http://nodejs.org/api/net.html#net_server_close_callback