【问题标题】:setting node's http.request timeout设置节点的 http.request 超时
【发布时间】:2012-03-30 11:01:07
【问题描述】:

我正在测试一个服务器,我需要尽可能长时间地保持连接。我想手动设置http.request() 函数的超时时间。这就是我在代码中所做的。

var req = http.request(options, function(res) {
        res.setEncoding('utf8');

        res.on('data', function (chunk) {
            //do something with chunk
        });
});

我尝试了req.on('socket' function(socket){ socket.setTimeout(SOCKET_TIMEOUT); }); 之类的方法,但它给了我一些奇怪的错误,我认为这不是正确的方法。为了您的信息,我使用该方法得到的错误如下

Trace: 
    at Socket.<anonymous> (events.js:133:17)
    at ClientRequest.<anonymous> (/path/server_nologs.js:168:10)
    at ClientRequest.emit (events.js:88:20)
    at Array.1 (http.js:1250:9)
    at EventEmitter._tickCallback (node.js:192:40)
(node) warning: possible EventEmitter memory leak detected. 11 listeners added. Use emitter.setMaxListeners() to increase limit.

这对我来说有点神秘。有人可以解释一下如何设置超时吗?否则,如果我的方法是正确的,我该如何避免出现该错误?

【问题讨论】:

  • 你试过req.setTimeout吗?
  • 刚试过。似乎它甚至没有启动连接(我正在尝试将它连接到另一个 nodejs 服务器,而另一个服务器没有记录到它的任何连接)。
  • 我注意到我在这个问题的范围之外有一些错误,我更正了它们,现在服务器正在工作,但一段时间后它仍然超时。我想这是我正在联系的服务器,而不是这个。你知道如何在另一边设置超时吗?还是之前提到的nodejs服务器。

标签: node.js timeout


【解决方案1】:

这是我正在使用的:(对我有用)


req = httpClient.request(urlParts.method, urlParts.path, urlParts);
req.connection.setTimeout(HTTP_REQUEST_TIMEOUT);

其中 HTTP_REQUEST_TIMEOUT 是我在设置为 30000 之前声明的变量

【讨论】:

  • 谢谢,我已经找到了与您的答案相似的答案,但您使用的是httpClient.request,我不知道这与我的实现有何不同!无论如何+1谢谢:-)
  • 这将设置连接超时而不是请求超时。关闭请求并不严格意味着关闭连接。
猜你喜欢
  • 2011-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-25
  • 1970-01-01
  • 2014-08-31
  • 2017-11-03
  • 1970-01-01
相关资源
最近更新 更多