2012-03-31 90 views
19

我期望能夠基本更改我的快速應用運行的端口。以編程方式停止並重新啓動快遞服務器(更改端口)

我已經試過:

server.on('close', function() { 
    server.listen(3000); 
}); 

server.listen(8080); 
server.close(); 

這將返回一個晦澀的node.js錯誤。我正在運行節點v0.4.11,現在我正在升級以查看是否修復了它。

編輯這裏的錯誤:

Assertion failed: (!io->watcher_.active), function Set, file ../src/node_io_watcher.cc, line 160. 

謝謝, 馬特

+0

'.listen'是異步的,所以它會在它打開之前嘗試關閉。嘗試'server.listen(8080,function(){server.close();});',也許這會工作。 – loganfsmyth 2012-03-31 20:53:19

+1

你有什麼錯誤? – Brad 2012-03-31 20:55:06

+0

斷言失敗:(!io-> watcher_.active),函數Set,file ../src/node_io_watcher.cc,第160行。 – Matt 2012-03-31 21:00:28

回答

26

問題是.listen是異步的。在撥打.listen後立即致電.close,您將在打開之前關閉它。

試試這個。

server.listen(8080, function() { 
    server.close(); 
}); 
+2

#close也是異步的。它有一個回調,只有當服務器處理完剩餘的連接時纔會觸發回調 – rocketspacer 2017-01-01 20:07:53

相關問題