在发送推送通知后,应用程序卡住了"输入PEM密码短语"

use*_*775 5 certificate apple-push-notifications node.js

我正在使用apn从node.js App向Apple发送推送通知.

我的代码:

    // send to development****
    var dev_cert_path = path.join(__dirname, '..', 'cert.pem');
    var dev_key_path = path.join(__dirname, '..', 'key.pem');
    var devOptions = { "gateway": "gateway.sandbox.push.apple.com" , "cert": dev_cert_path, "key": dev_key_path, "passphrase":'XXXXX'};


    var devApnConnection = new apn.Connection(devOptions)
    , devMyDevice = new apn.Device(token)
    , devNote = new apn.Notification();

    devNote.expiry = Math.floor(Date.now() / 1000) + 3600; // Expires 1 hour from now.
    devNote.badge = 3;
    devNote.sound = "xxx.aiff";
    devNote.alert = message;
    devNote.payload = {'messageFrom': ''};
    devApnConnection.pushNotification(devNote, devMyDevice);
    var options = {
    "batchFeedback": true,
    "interval": 1
    };

    var devFeedback = new apn.Feedback(options);
         devFeedback.on("feedback", function(devices) {
             devices.forEach(function(item) {
                 logger.debug("device error : " + item.device);
                 // Do something with item.device and item.time;
             });
    });

    devApnConnection.on('transmitted', function(res){
       logger.debug("sent this message:"+JSON.stringify(devNote)+ " to this device: " + devMyDevice); 
    });

    devApnConnection.on('error', function(res){
       logger.error("sending message failed to this device: " + devMyDevice + " data: " + JSON.stringify(res) );
    });


}
catch(e)
    {logger.error("Push notification error: ",e.message);}
Run Code Online (Sandbox Code Playgroud)

我的问题:

当向node.js发送请求时,它发送推送通知,但我Enter PEM pass phrase:在终端中收到很多:

/projects/my_app$ node app.js

POST /requests 200 14ms
Enter PEM pass phrase:
Enter PEM pass phrase:
Enter PEM pass phrase:
Enter PEM pass phrase:
Enter PEM pass phrase:
Enter PEM pass phrase:
Run Code Online (Sandbox Code Playgroud)

所以我的应用程序被卡住,直到重新启动节点......任何想法?

编辑:

我试图从文件中删除密码:

openssl rsa -in key.pem -out nopassword.pem
Run Code Online (Sandbox Code Playgroud)

但我还是在应用程序控制台得到这一点 - 但按输入时,停止点击进入时,或密码短语拍摄此消息,直到下一个请求(除去通之前,它显示出许多消息,直到重新启动应用程序,还)...

use*_*775 6

我发现了问题......

我不得不在反馈选项中添加证书,密钥和密码.

var options = {
  "batchFeedback": true,
  "interval": 300
};

var devFeedback = new apn.Feedback(options);
         devFeedback.on("feedback", function(devices) {
             devices.forEach(function(item) {
                 logger.debug("device error : " + item.device);
                 // Do something with item.device and item.time;
             });
});
Run Code Online (Sandbox Code Playgroud)

选项应该是:

var options = {
   "batchFeedback": true,
   "interval": 1,
   "production": false,
   "cert": dev_cert_path,
   "key": dev_key_path,
   "passphrase":'XXXXX'
};
Run Code Online (Sandbox Code Playgroud)