【发布时间】: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服务器。