2014-12-01 4 views
2

나는 node.js에 매우 익숙하며, 내가 쉽게 할 수없는 첫 번째 일은 다음과 같다.node.js가 종료 시점을 어떻게 알 수 있습니까?

var http = require('http'); 
http.createServer(function (req, res) { 
    res.writeHead(200, {'Content-Type': 'text/plain'}); 
    res.end('Hello World\n'); 
}).listen(1337, '127.0.0.1'); 
console.log('Server running at http://127.0.0.1:1337/'); 

어떻게 Node.js를 그것이 마지막 줄 후 종료가 실행 된 안된다고 알 : 가장 일반적인 Node.js를 예를 생각해? . NET에서 오는 나는 모든 비 백그라운드 스레드가 종료 될 때 프로세스가 끝난다는 단순화 된 가정을 가지고 있습니다. node.js는 단일 스레드이므로 트리거 할 수있는 이벤트가 있는지 여부를 결정하는 일부 논리 모니터링 이벤트 구독이 있어야합니다. 그렇지 않으면 node.js가 종료 될 수 있습니다. 불행히도, 나는 그것에 대한 문서를 찾을 수 없습니다. 아무도 도와 줄 수 있습니까?

답변

2

.NET 배경을 사용하는 경우 IIS를 통해 호스팅되는 ASP.NET 웹 응용 프로그램을 작성했을 수 있습니다. 이 경우 .NET 프레임 워크는 들어오는 요청을 처리 할 응용 프로그램 스레드 풀을 만들고 페이지가 실행되고 응답이 클라이언트에 다시 전송됩니다. 따라서 .NET Framework에서 페이지 실행을 처리합니다. 전체 프로세스에서 IIS는 들어오는 요청을 듣고 적절한 작업자/스레드에 대한 요청을 처리합니다.
Node.JS는 방금 요청을 처리하는 방법을 노드에 지시 한 것과 같은 방식으로 작동합니다. 서버를 만들면 노드는 들어오는 요청을 수신 대기하도록 소켓을 엽니 다. 그러나 닫기 명령이 작성되지 않았기 때문에 서버는 계속 실행됩니다.

서버 방문을 http://nodejs.org/api/net.html#net_server_close_callback

+1

감사를 종료하는 방법에 대한 자세한 내용은
http://strongloop.com/strongblog/node-js-performance-event-loop-monitoring/ http://strongloop.com/strongblog/node-js-event-loop/

방문, 노드/처리 요청을 처리하는 방법을 이해하기! '이벤트 루프'는 내가 필요한 키워드입니다. 문서에서 나는 다음을 발견했다 : 노드는 입력 스크립트를 실행 한 후 단순히 이벤트 루프를 입력한다. 수행 할 콜백이 더 이상 없을 때 Node는 이벤트 루프를 종료합니다. – ironic

+0

@ 정확합니다. 그냥 포인트를 추가하십시오. 콜백을 등록한 이후로 서버를 작성한 경우, 프로그래밍 방식으로 종료하지 않는 한 노드는 일반적으로 종료되지 않습니다. 코드에서 콜백을 생략하여 시도 할 수 있습니다. 이 경우 서버가 즉시 닫힙니다. – Amitesh

2

무엇? 이 코드는 종료되지 않습니다! 대신 모든 http 요청을 청취하기 시작합니다.

언제 종료합니까? 이 정의 된 요청 핸들러가없고, 더 이상 모든 이벤트를 듣고 모든 코드 문이 실행되는 경우 다음이 exaple에 대한 종료하지 않는 경우 다른

: 단 하나의 문으로 구성된 간단한 서버입니다 :

console.log('Hiii'); 

우리는 어떤 이벤트도 수신 대기하지 않기 때문에 마지막 명령문이 실행되는 즉시 종료됩니다.