【问题标题】: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);
    });
    

    【讨论】:

      猜你喜欢
      • 2017-04-01
      • 2012-08-15
      • 1970-01-01
      • 2015-10-24
      • 2011-02-26
      • 1970-01-01
      • 1970-01-01
      • 2012-02-16
      • 2021-08-07
      相关资源
      最近更新 更多