我正在使用request模块向第三方API发送请求(GET和POST)。
我使用超时选项来限制响应的等待时间(不能等待太久)。
问题是有时抛出以下异常:
错误:socket在createHangUpError(http.js:1476:15)处挂断 Socket.emit上的Socket.socketCloseListener(http.js:1526:23) (events.js:117:20)at 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
});