2015-08-29 185 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); 
}) 
相關問題