2013-05-07 298 views
0

我看到很多關於如何使用Connect創建服務器的示例,但是如何在沒有ctrl + c的情況下正常關閉它?關閉連接服務器

我的用例是啓動一個輕量級連接服務器用於測試/嘲弄的目的。

回答

1

連接使用Node的內置HTTP庫,所以你可以直接調用server.close(): http://nodejs.org/api/http.html#http_server_close_callback。你也可以用process.exit(0)退出程序;返回到啓動你的應用程序的shell。

記住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);            
+0

是否有一個連接方法暴露該服務器? – badunk 2013-05-07 02:51:42

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();

+0

我正在編輯我的答案,以顯示這種創建服務器的方法,但你擊敗了我。 – regretoverflow 2013-05-07 03:04:37

+0

謝謝 - 如果您只是進行編輯,我會接受您的答案 – badunk 2013-05-07 03:06:30

相關問題