我实现了一个node.js脚本,该脚本查询APN反馈服务以检索无效令牌列表。不幸的是,我没有设法获得任何无效令牌。我按照以下步骤操作:
这是我用来查询反馈服务的脚本:
function pollAPNFeedback() {
var certPem = fs.readFileSync('apns-prod-cert.pem', encoding='ascii');
var keyPem = fs.readFileSync('apns-prod-key-noenc.pem', encoding='ascii');
var options = { key: keyPem, cert: certPem };
console.log("Connecting APN feedback service");
var stream = tls.connect(2196, 'feedback.sandbox.push.apple.com', options, function() {
if (stream.authorized == false) {
return console.log('not connected')
} else {
console.log('connected');
};
var bufferlist = [];
stream.on('data', function(data) {
// APN feedback starts sending data immediately on successful connect
console.log('-->Data: ', data);
//bufferlist.push(data);
});
stream.on('readable', function(){
console.log('we have incoming data');
});
stream.on('error', function(err){
console.log('error: ', err);
});
stream.on('close', function(){
console.log('closed');
console.log('stream.data = ', stream.data);
});
});
}
如您所见,我在流变量上放了一些监听器。永远不会调用'data'侦听器上的回调函数,只有'close'事件会触发其回调。我确信连接已启动,因为stream.authorized是真的。 我做错了什么?
答案 0 :(得分:0)
您是否可以使用生产证书联系沙盒环境?
从你的代码:
var certPem = fs.readFileSync('apns- prod -cert.pem',encoding ='ascii');
var keyPem = fs.readFileSync('apns- prod -key-noenc.pem',encoding ='ascii');
并且:
var stream = tls.connect(2196,'feedback。 sandbox .push.apple.com',options,function()
如果是这种情况,那就是它不起作用的原因。