Google App Engine - Node.js - 未从请求处理程序发送的出站https请求

时间:2017-08-23 09:33:55

标签: node.js google-app-engine https

我在GAE灵活环境中运行节点快速服务器。除了其他事项之外,我的一个端点路由应该向某些用户发送推送通知。我不希望请求用户在继续/获得响应之前等待外部Pushwoosh推送API响应,所以我在我的初始请求/响应promise链之外的单独函数中调用以下代码。因此,当此代码将异步请求发送到Pushwoosh时,我的用户请求 - 响应承诺链将自行继续关闭,并使远程API调用自行完成。

我已在本地测试了此代码运行节点,它运行正常。当我将这个完全相同的代码部署到GAE时,由于某种原因从未发送Pushwoosh请求。我看不到任何没有响应或错误的console.log。我已经确认所有请求数据都是正确的。

导致此请求未被发送的原因是什么?节点版本为6.9.4。

var https = require('https');

var headers = {
    'Content-Type': 'application/json; charset=utf-8'
};

var options = {
    host: 'cp.pushwoosh.com',
    port: 443,
    path: '/json/1.3/createMessage',
    method: 'POST',
    headers: headers
};

var message = {
    request: {
        application: process.env.PUSHWOOSH_APP_ID,
        auth: process.env.PUSHWOOSH_REST_API_KEY,
        notifications: [{
            send_date: 'now',
            ignore_user_timezone: true,
            content: 'test',
            ios_badges:'+1',
            android_badges:'+1',
            android_priority: 2,
            android_vibration: 1,
            data:{
                key: 'value'
            }
        }]
    }
};

var req = https.request(options, function(res) {  
    res.on('data', function(data) {
        console.log('Response:');
        console.log(JSON.parse(data));
    });
});

req.on('error', function(e) {
    console.log('Error:');
    console.log(e);
});

req.write(JSON.stringify(message));
req.end();

0 个答案:

没有答案