2015-08-29 186 views
0

我正在使用HTTP Node.js.关闭后再次打开服务器

为了防止新的会话,虽然我已经有一个活动的,我使用server.close();. 当这个活动会话完成后,我想再次打开服务器进行新会话。 Ex server.open();

回答

1

像这样的事情?

var http = require('http'); 

var server = http.createServer(function(req, res) { 
    server.close(); 
    setTimeout(function() { 
    res.end(function() { 
     server.listen(3000); 
    }); 
    }, 5000); 
}).listen(3000); 

(其中setTimeout模拟一些操作,可能需要一些时间)

但是,我认为,通知客户,他们必须等待一段时间,不仅仅是关闭服务器共有一个更好的解决方案:

var http = require('http'); 
var busy = false; 
var server = http.createServer(function(req, res) { 
    if (busy) { 
    res.writeHead(503); 
    return res.end(); 
    } 
    busy = true; 
    setTimeout(function() { 
    res.end(function() { 
     busy = false; 
    }); 
    }, 5000); 
}).listen(3000); 
+0

但是,一旦时间用完,我将如何再次打开新会话? – Hwende

+0

这就是为什么'res.end()'处理程序中有'server.listen()':它将使服务器再次侦听新的传入请求。 – robertklep

+0

它完美的作品。谢谢。 – Hwende

0
server.close()

使用回调运行server.listen(),像这样:

server.close(function() { 
    server.listen(8080); 
}) 
相关问题