如何在 Node.js 中设置 http.createClient 的超时?

发布于 2024-11-09 10:24:52 字数 971 浏览 1 评论 0原文

有一篇文章:如何我是否在node.js中为客户端http连接设置超时

但没有一个答案有效。

所以,我有这样的代码:

    var remote_client = http.createClient(myPost, myHost);
    var path = '/getData?';
    var param = {       };

    var request = remote_client.request("POST", path,);

    // error case
    remote_client.addListener('error', function(connectionException){
        console.log("Nucleus Error: " + connectionException);
        next(connectionException);
    });

    request.addListener('response', function (response) {
        response.setEncoding('utf-8'); 
        var body = '';

        response.addListener('data', function (chunk) {

        // get the result!              
        });
    });

    request.end();

最大的问题是我连接的网址可能会超时。因此,我想设置一个超时时间,比如15秒。如果是这样,则触发监听器。

但是,我在 http.createClient 的文档中没有看到任何超时功能。请指教。谢谢。 :)

There is a post: How do I set a timeout for client http connections in node.js

but none of the answer will work.

So, I have the code like that:

    var remote_client = http.createClient(myPost, myHost);
    var path = '/getData?';
    var param = {       };

    var request = remote_client.request("POST", path,);

    // error case
    remote_client.addListener('error', function(connectionException){
        console.log("Nucleus Error: " + connectionException);
        next(connectionException);
    });

    request.addListener('response', function (response) {
        response.setEncoding('utf-8'); 
        var body = '';

        response.addListener('data', function (chunk) {

        // get the result!              
        });
    });

    request.end();

The biggest problem is that the url that I'm connection to may timeout. Therefore, I would like to set a timeout, like 15 secs. If so, trigger a listener.

However, I haven't seen any timeout features in the documentation for http.createClient. Please advise. Thanks. :)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

千寻… 2024-11-16 10:24:52
var foo = setTimeout(function() {
    request.emit("timeout-foo");
}, 15000);

// listen to timeout
request.on("timeout-foo", function() { });

request.addListener('response', function (response) {
    // bla
    // clear counter
    clearTimeout(foo);
});

自己去柜台吧。

var foo = setTimeout(function() {
    request.emit("timeout-foo");
}, 15000);

// listen to timeout
request.on("timeout-foo", function() { });

request.addListener('response', function (response) {
    // bla
    // clear counter
    clearTimeout(foo);
});

Just run the counter yourself.

请止步禁区 2024-11-16 10:24:52

上面的答案是旧的。 http.request 现在接受超时选项:

http.request(options[, callback])
http.request(url[, options][, callback])

来自 doc

timeout:指定套接字超时的数字
毫秒。这将设置套接字之前的超时时间
已连接。

The answer above is old. http.request now accepts a timeout option in:

http.request(options[, callback])
http.request(url[, options][, callback])

From the doc:

timeout : A number specifying the socket timeout in
milliseconds. This will set the timeout before the socket is
connected.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文