Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript node.js中的异步https请求_Javascript_Node.js_Https - Fatal编程技术网

Javascript node.js中的异步https请求

Javascript node.js中的异步https请求,javascript,node.js,https,Javascript,Node.js,Https,我有一个应用程序可以向第三方服务发送https请求以执行日志记录。出于某种原因,几个小时前我注意到第三方拒绝连接。这是一个不同的话题 我在node.js应用程序中注意到的是,尽管请求是动态创建的,因此不应该挂起整个应用程序,但它们是 重新启动进程后,https请求挂起,然后由于连接被拒绝错误而终止。下面是示例代码 var logger = function(data){ var req = https.request({ host: 'logs.loggly.com',

我有一个应用程序可以向第三方服务发送https请求以执行日志记录。出于某种原因,几个小时前我注意到第三方拒绝连接。这是一个不同的话题

我在node.js应用程序中注意到的是,尽管请求是动态创建的,因此不应该挂起整个应用程序,但它们是

重新启动进程后,https请求挂起,然后由于连接被拒绝错误而终止。下面是示例代码

var logger = function(data){

    var req = https.request({
        host: 'logs.loggly.com',
        port: 443,
        path: '/inputs/<my real key is here, removed obviously>',
        method: 'POST',
        headers:{
            'content-type': 'application/json'
        }
    }, function(res){
        var body = [];
        res.on('chunk', function(data){
            body.push(data);
        });
        res.on('end', function(){
            console.log(body.join(''));
        })
    });
    req.write(JSON.stringify(data));
    req.end();

}
所以我很好奇为什么这个出站https请求的连接被拒绝/超时应该挂起,然后导致整个应用程序崩溃


谢谢

程序挂起并且不打印任何内容,因为它没有捕获数据,并且您没有告诉进程执行任何操作,而是打印带有[].join的空字符串。如果没有关于IO绑定任务的明确指示,Node.js将不会返回。您需要传入并执行回调函数,或调用process.exit;,在res.oned的处理程序中,[handler];,e、 g:


res.onchunk,[handler];不是标准的HTTPS事件。您可能想要res.ondata、functionchunk{body.pushchunk;};之类的东西

程序挂起并且不打印任何内容,因为它没有捕获数据,并且您没有告诉进程执行任何操作,而是打印带有[].join的空字符串。如果没有关于IO绑定任务的明确指示,Node.js将不会返回。您需要传入并执行回调函数,或调用process.exit;,在res.oned的处理程序中,[handler];,e、 g:

res.onchunk,[handler];不是标准的HTTPS事件。您可能想要res.ondata、functionchunk{body.pushchunk;};之类的东西

你能添加一个请求单吗。。。声明以捕获错误并查看这是否解决了您的问题?是否可以添加req.onerror。。。声明以捕获错误并查看这是否解决了您的问题?
logger({ 'test': 'datafoo' });
res.on("end", function() { console.log(body.join('')); process.exit(); });