Javascript 捕捉;“插座挂起”;请求模块中出现错误

Javascript 捕捉;“插座挂起”;请求模块中出现错误,javascript,node.js,sockets,Javascript,Node.js,Sockets,我正在使用该模块向第三方API发送请求(GET&POST) 我正在使用timeout选项来限制响应的等待时间(不能等待太久) 问题是,有时会引发以下异常: 错误:createHangUpError(http.js:1476:15)处的套接字挂起 Socket.emit上的Socket.socketCloseListener(http.js:1526:23) (events.js:117:20)在TCP.close(net.js:465:12) 我猜这是因为请求被中止(由于超时),但套接字仍然打开

我正在使用该模块向第三方API发送请求(GET&POST)

我正在使用timeout选项来限制响应的等待时间(不能等待太久)

问题是,有时会引发以下异常:

错误:createHangUpError(http.js:1476:15)处的套接字挂起 Socket.emit上的Socket.socketCloseListener(http.js:1526:23) (events.js:117:20)在TCP.close(net.js:465:12)

我猜这是因为请求被中止(由于超时),但套接字仍然打开,并在2分钟后挂断

问题是-当请求被中止时,如何关闭套接字,或者如何捕获此异常并优雅地处理它

以下是我使用的相关代码:

var request = require('request'),
    requestOptions = {
        url: 'http://example.com/api',
        timeout: 1000
    };

request(requestOptions, function onResponse(error, response, body) {
    if (error) {
        //Trying to close the socket (to prevent socket hang up errors)
        //**Doesn't help**
        this.req.socket.destroy();
        this.req.destroy();
        return;
    }

    //Handle the response
});

我在Node的
http.get
中遇到了非常类似的情况。不确定这对您的情况是否有帮助,但try/catch没有抓住它。然而,当我在('error',e=>{console.log(e);}上执行http.get(url,options,res=>{})。