0

我看到很多关于如何使用Connect创建服务器的示例,但是如何在没有 ctrl + c 的情况下优雅地关闭它?

我的用例是为测试/模拟目的启动一个轻量级连接服务器。

4

2 回答 2

1

Connect 使用 Node 内置的 HTTP 库,因此您只需调用 server.close(): http://nodejs.org/api/http.html#http_server_close_callback。您也可以使用 process.exit(0) 退出应用程序;返回到启动您的应用程序的外壳。

请记住 http.close() 只是停止接受新连接,具体取决于您的应用程序的结构,它仍然可能不会退出。现有连接将得到服务,直到它们自行关闭。

这是一个使用 Connect 和 http 混合的示例:

var connect = require('connect')
   , http = require('http');

var app = connect()
   .use(connect.favicon())
   .use(connect.logger('dev'))
   .use(connect.static('public'))
   .use(connect.directory('public'))
   .use(connect.cookieParser())
   .use(connect.session({ secret: 'my secret here' }))
   .use(function(req, res){
      res.write('Hello from Connect!\n');
      res.end();
      //stop accepting new connections:
      srv.close();
      //exit the app too:
      process.exit(0);


});

var srv =  http.createServer(app).listen(3000);                                              
于 2013-05-07T02:50:55.540 回答
0

我刚刚意识到不是以这种方式编写服务器:

var app = connect()
.use(function(req, res, next){
    res.end('hello world')
})
.listen(3000); 

我可以这样创建服务器:

var app = connect()
.use(function(req, res, next){
    res.end('hello world')
}); 
var server = http.createServer(app).listen(3000, done);

因此,允许我使用server.close();

于 2013-05-07T02:54:14.510 回答