express의 res 파라미터를 마지막 콜백 함수에서 호출할 수 있도록 클로져를 활용한다.
app.get('/server', function (req, res) { //-------------------(1)
var req_id = uuid.v4();
var reqa = zmq.socket('req');
var reqb = zmq.socket('req');
var clear_resource = function() {
reqa.close();
reqb.close();
clearTimeout(tid);
}
var tid = setTimeout(function(){
console.log('------zmq timeout------')
res.sendStatus(408);
clear_resource();
}, 10000);
reqa.connect('tcp://localhost:5554');
reqb.connect('tcp://localhost:5555');
reqa.on('message', function(msg) { //-------------------(3)
var resp = JSON.parse(msg.toString());
console.log('------resp 1-------')
console.log(resp);
if (resp.code != 200) {
res.sendStatus(resp.code);
clear_resource();
return;
}
setTimeout(function(){
reqb.send(req_id); //---------------------------------(4)
}, 500);
});
reqb.on('message', function(msg) { //------------------(5)
var resp = JSON.parse(msg.toString());
console.log('------resp 2-------')
console.log(resp);
if (resp.code != 200) {
res.sendStatus(resp.code);
clear_resource();
return;
}
res.send(resp.data); //----------------------------------(6)
clear_resource();
});
reqa.send(req_id); //-------------------------------------(2)
});
'Node.js' 카테고리의 다른 글
[Node.js] HTTPS 서버 실행 시 XP IE8에서 접속 불가능한 경우 (0) | 2017.04.12 |
---|---|
[node.js] querysting을 통한 form-data 파싱 (0) | 2016.11.30 |
[node.js] HTTPS & Digest (0) | 2016.05.04 |
[node.js] 개발자가 가장 많이 실수하는 10가지 (0) | 2016.04.20 |
[node.js] Error Handling in Node.js (0) | 2016.02.02 |