在请求模块中捕获“套接字挂断”错误

alo*_*kad 5 javascript sockets node.js

我正在使用请求模块向第 3 方 API 发送请求(GET 和 POST)。

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

问题是有时会抛出以下异常:

错误:socket 在 createHangUpError (http.js:1476:15) at Socket.emit (events.js:117:20) at TCP.close (net.js) 的 Socket.socketCloseListener (http.js:1526:23) 挂断: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
});
Run Code Online (Sandbox Code Playgroud)