无法获得node-apn连接

我正在尝试与APNbuild立连接。 它根本不会连接。 我得到的变化:

apn Socket error occurred +609ms { [Error: socket hang up] code: 'ECONNRESET' } 

 apn Connection error occurred before TLS Handshake +0ms 

这是一个Passbook通行证。 不是应用程序。 我正在使用存折证书。

我的代码是:

 var apns = require('apn'); var root = process.cwd(); var fs = require('fs'); var options = { cert: root + '/certs/new/cert.pem', /* Certificate file path */ certData: null, /* String or Buffer containing certificate data, if supplied uses this instead of cert file path */ key: root + '/certs/new/key.pem', /* Key file path */ keyData: null, /* String or Buffer containing key data, as certData */ passphrase: 'secret', /* A passphrase for the Key file */ ca: null, /* String or Buffer of CA data to use for the TLS connection */ gateway: 'gateway.sandbox.push.apple.com',/* gateway address */ port: 2195, /* gateway port */ enhanced: true, /* enable enhanced format */ errorCallback: undefined, /* Callback when error occurs function(err,notification) */ cacheLength: 100 /* Number of notifications to cache for error purposes */ }; var apnsConnection = new apns.Connection(options); var myDevice = new apns.Device('token'); var note = new apns.Notification(); note.payload = {}; note.device = myDevice; apnsConnection.sendNotification(note); 

看来我混淆了我的证书。 我确信我早些时候尝试交换他们,但显然没有。


证书 :您的应用证书。
关键 :苹果的WWDR

你在代理人后面吗? 这可能是问题(至less它经常是我的情况)

尝试以下结构:手动读取.cert.key文件,并分别将它们设置为certDatakeyData属性。 这是核心:

 var key = root + '/certs/new/key.pem' var cert = root + '/certs/new/cert.pem'; var certData = fs.readFileSync(cert, encoding='ascii'); var keyData = fs.readFileSync(key, encoding='ascii'); var apnsConnection = new apns.Connection({ certData: certData, keyData: keyData, gateway: 'gateway.sandbox.push.apple.com', port: 2195, ... /* other configs of course */ });