小记NodeJS两项小技巧(与HTTP相关)
1,兼容HTTP1.1和HTTP1.0
区别在content-length,1.0接受定长,不接受变长,导致transfer-encodeing的chunked模式无法识别,最终导致无法识别BODY。需要在HTTP1.1的header中指定content-length。
2,作为HTTP客户端如何设定超时
除了异步之外,http request也是个头大的问题,给自己加个超时可以是程序更健康,推荐如下做法。在req.end()之后,加上settimeout,如下。
setTimeout(function(){ req.abort(); //console.log(JSON.parse(body)); if(!body) { console.log("服务器没有响应,在延迟3秒后退出") o_req.flash('success', '查询超时!'); o_res.render(obj, { title: '查询', query_z: '后台正在拼命加速', query_rt:'喝口水,请稍等片刻', success: o_req.flash('success').toString(), error: o_req.flash('error').toString()}); } },2000);