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

时间:2014-10-01 09:17:11

标签: javascript node.js sockets

我正在使用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
});

0 个答案:

没有答案