2013-02-21 88 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