2012-03-31 3 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

+1

어떤 오류가 발생합니까? – Brad

+0

어설 션 실패 : (! io-> watcher_.active), function Set, 파일 ../src/node_io_watcher.cc, 160 행 – Matt

답변

26

문제는 .listen 비동기라는 것이다 :

편집 다음은 오류입니다. .listen을 호출 한 직후에 .close을 호출하면 열리기 전에 닫는 중입니다.

대신 사용해보십시오.

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

#close도 비동기입니다. 서버가 남아있는 연결을 다 처리 할 때만 트리거하는 콜백이 있습니다. – rocketspacer