Javascript 捕捉;“插座挂起”;请求模块中出现错误
我正在使用该模块向第三方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分钟后挂断 问题是-当请求被中止时,如何关闭套接字,或者如何捕获此异常并优雅地处理它 以下是我使用的相关代码: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) 我猜这是因为请求被中止(由于超时),但套接字仍然打开
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=>{})。