【问题标题】:nodejs http.request close process when request timeout请求超时时nodejs http.request关闭过程
【发布时间】:2018-01-23 11:13:28
【问题描述】:
const request = https.request(options, (response) => {})
request.on('socket', (socket) => {
socket.setTimeout(100)
socket.on('timeout', () => {
console.log(`timeout`.red);
request.abort()
})
})
request.on('error', (e) => {
console.log(`problem with request: ${e.message}`);
});
错误并终止进程。
只需要记录错误而不杀死进程
【问题讨论】:
标签:
node.js
https
error-handling
【解决方案1】:
我认为超时不会导致您的进程退出。试试这个与你的代码非常相似的代码,你可以将超时设置为你喜欢的任何东西,故意导致这个错误。我已经稍微修改了您的代码,以便在退出之前等待用户输入。
const https = require ('https');
const options = {
hostname: "httpbin.org",
path: "/ip"
}
var request = https.request(options, (res) => {
console.log('statusCode:', res.statusCode);
res.on('data', (d) => {
process.stdout.write(d);
});
});
request.on('socket', (socket) => {
socket.setTimeout(1000);
socket.on('timeout', () => {
console.log(`timeout`.red);
request.abort()
})
})
request.on('error', (e) => {
console.log(`problem with request: ${e.message}`);
});
request.end();
var stdin = process.openStdin();
console.log('Press <enter> to exit..');
stdin.addListener("data", function(d) {
console.log('exiting..');
process.exit(1);
});