Node.js中的asynchronoushttps请求
我有一个应用程序,启动https请求到第三方服务执行日志logging。 出于某种原因,我注意到几个小时前,第三方拒绝连接。 但这是一个不同的话题。
我注意到我的node.js应用程序是,尽pipe请求被dynamic创build,因此不应该挂在整个应用程序,他们是。
进程重新启动后,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(); }
这就是所谓的:
logger({ 'test': 'datafoo' });
所以我很好奇,为什么从这个出站https请求连接拒绝/超时应挂起,然后崩溃整个应用程序。
谢谢!
该程序挂起和打印什么都没有,因为它不捕获数据,而且你不告诉进程做任何事情,而是用[].join('')
打印一个空string。 Node.js将不会返回没有明确指示的IO绑定任务。 你需要传递并执行一个callback函数,或者调用process.exit();
,在res.on("end", [handler]);
,例如:
res.on(“end”,function(){ 的console.log(body.join( '')); process.exit(); });
res.on("chunk", [handler]);
不是一个标准的HTTPS事件。 你可能打算像res.on("data", function(chunk) { body.push(chunk); });
。
- http进入nodejs
- 将$ .get转换为node.js请求
- 在监听自定义端口时,使用SSL(https)连接到Nodejs / Socket.IO服务器
- 在aws elastic-beanstalk上configurationhttps进行快速configuration
- 如何为节点js项目创build一个.pem和.cert文件
- express-js服务器中的HTTPS SSL损坏(net :: ERR_CERT_COMMON_NAME_INVALID)
- 无法在Express中设置HTTPS服务器
- 对所有http请求使用Firebase函数ENOTFOUND
- 如何在同一台计算机上(多个域和证书,一个VPS和IP)将https反向代理设置为多个nodejs-https-servers,