2013-02-21 114 views
8

這是我的代碼:聽一個不同的IP地址

var server = express(); 

// Create the HTTP server 
http 
    .createServer(server) 
    .listen(80, '10.10.10.10'); 

一旦服務器已經啓動,我怎麼可以動態改變聽了IP地址,說11.11.11.11而不是10.10.10.10。有沒有「unlisten」方法?

+0

什麼是你想實現什麼? – robertklep 2013-02-21 13:54:02

+0

@robertklep:我想用不同的IP地址重新啓動服務器而不會終止進程。 – Randomblue 2013-02-21 15:20:46

回答

23

你必須使用server.close()不app.close()..

var express = require('express') 
    , http = require('http') 
    , app = express() 
    , server = http.createServer(app) 

app.get('/',function(req,res){ 
    ... 
}) 

server.listen(8000,'127.0.0.1',function(){ 
server.close(function(){ 
    server.listen(8001,'192.168.0.202') 
}) 
}) 

應該工作

+0

謝謝。我試過了,'server.close'不會解除「127.0.0.1」地址的綁定。 – Randomblue 2013-02-21 15:14:26

+0

也許有一些開放的連接?請參閱http://nodejs.org/api/net.html#net_server_close_callback – supernova 2013-02-21 15:17:31

+0

不可以。我甚至會得到一個未捕獲的異常'[Error:Not running]'。 – Randomblue 2013-02-21 15:20:03

0

什麼你所要完成的是在我看來相當不規範。我會建議server.close()。關閉將等待所有請求完成並觸發「關閉」事件。您可以綁定該事件以偵聽新IP。這很古怪。

+0

這不適用於Express。 '未捕獲的異常! [TypeError:Object function app(req,res){app.handle(req,res); }沒有方法「關閉」]' – Randomblue 2013-02-21 14:48:29