2012-06-14 5 views
2
@app = express.createServer() 
    @app.use express.bodyParser() 

HTTP 요청/응답이 끝나면 (데이터베이스 연결을 종료하는) 조치를 수행하려고합니다. 이것은 응답이 클라이언트에 도달하기 위해 응답을 기다린 후에 발생하는 것이 바람직하지만, 클라이언트가 기다리지 않고 인라인으로 발생할 경우 항상 process.nextTick을 수행 할 수 있습니다.node.js 끝에 클린업 코드를 실행하십시오. http 응답

응답이 끝날 때 어떻게 콜백을 등록 할 수 있습니까?

답변

2

그래서 각 요청마다 데이터베이스 연결을 열거 나 닫거나 열거 나 닫으려고합니까? 열어두고 연결을 다시 사용하는 것이 훨씬 좋습니다.

당신은 당신이 당신은 res.end() 기능 (즉, 같은 같은라는 마지막 하나의 재정의하는 미들웨어를 만들 수 있습니다 (모든 경로에 대해) 다시 클라이언트로 응답을 보내 직후에 뭔가를하려는 경우 :

@app.use (req, res, next) -> 
    var oldEnd = res.end; 
    res.end = -> 
    oldEnd.apply(res, arguments) 
    # do stuff after sending the response back to the client 
+1

두 개의 서로 다른 쿼리에 대해 연결을 동시에 사용할 수 없기 때문에 요청 당 연결이 있습니다. 앱 성능이 충분히 떨어지는 경우 연결 풀링을 도입 할 수 있습니다. 이 경우 솔루션을 사용하여 연결을 풀에 반환 할 수도 있습니다. 감사. –

6

HTTP 응답은 WritableStream 인 스트림이 종료되면, 종료 이벤트는 따라서 트릭하지 듣고 출사된다... 훨씬 더 유연

res.on('finish', function() { 
    console.log(res._headers); 
}); 

를 미들웨어 또는 리소스 핸들러에 넣을 수

관련 문제