I am writing API in node.js.
url http://localhost:8000/api/request?connId=19&timeout=8000
when I call above API from Postman then it takes 8 seconds to give the response. same as expected.
but when call this from curl it gives output instantly.
curl http://localhost:8000/api/request?connId=19&timeout=8000
Code is:
app.get('/api/request', ( req, res ) => {
let timeoutID = null; // return by setTimeout
let starttime = null; // time when request is begin
const time = req.query.timeout; // time send by client
const connId = req.query.connId; // id send by client
// checking client data is valid or not
if ( typeof(connId) !== undefined && typeof(time) !== undefined ) {
starttime = new Date(); // get current time
starttime = starttime.setMilliseconds(starttime.getMilliseconds()); // convert into millisecon
// initiate setTimeout
timeoutID = setTimeout(() => {
// remove that element from global array which reqest has been complted
removeByAttr(timeout, 'connId', connId);
// res.send({ status: "ok"}); // send response
}, time);
// initiate setInterval
const setInv = setInterval(() => {
// check timeout [] conatin the current request
const arrLength = timeout.length && timeout.filter(({ connId }) => req.query.connId === connId).length;
if ( arrLength === 0 ) {
res.send({ status: "ok"}); // send response
clearInterval(setInv); // clear/destroy current Interval
}
}, 80);
// insert the current request into global [] timeout
timeout.push({
connId,
time,
timeoutID,
starttime,
'endtime': +starttime + +time
});
}
});
via Shubham Batra
No comments:
Post a Comment