apnConfigs.forEach(function (apnConfig, index) { let connection = ""; if (apnConfig.cert && apnConfig.key) { apnConfig.maxConnections = apnConfig.maxConnections || 10; apnConfig.ca = ca; apnConfig.errorCallback = function (errorCode, notification, device) { if (device && device.token) { const id = device.token.toString('hex'); logger.error("apn errorCallback errorCode %d %s", errorCode, id); stats.addPushError(1, errorCode, self.type); if (errorCode == 8) { redis.hdel("apnTokens#" + apnConfig.bundleId, id); redis.get("tokenToPushId#apn#" + id, function (err, oldPushId) { logger.error("apn errorCallback pushId %s", oldPushId); if (oldPushId) { redis.del("pushIdToToken#" + oldPushId); redis.del("tokenToPushId#apn#" + id); } }); } } else { logger.error("apn errorCallback no token %s %j", errorCode, device); } } connection = apn.Connection(apnConfig); connection.index = index; connection.on("transmitted", function () { stats.addPushSuccess(1, self.type); }); } self.apnConnections[apnConfig.bundleId] = connection; logger.info("apnConnections init for %s maxConnections %s", apnConfig.bundleId, apnConfig.maxConnections); });
apnConfigs.forEach(function (apnConfig, index) { apnConfig.maxConnections = apnConfig.maxConnections || 10; apnConfig.ca = ca; apnConfig.errorCallback = function (errorCode, notification, device) { if (device && device.token) { var id = device.token.toString('hex'); logger.error("apn errorCallback errorCode %d %s", errorCode, id); stats.addApnError(1, errorCode); redis.hdel("apnTokens#" + apnConfig.bundleId, id); redis.get("apnTokenToPushId#" + id, function (err, oldPushId) { logger.error("apn errorCallback pushId %s", oldPushId); if (oldPushId) { redis.del("pushIdToApnData#" + oldPushId); redis.del("apnTokenToPushId#" + id); } }); } else { logger.error("apn errorCallback no token %s %j", errorCode, device); } } var connection = apn.Connection(apnConfig); connection.index = index; outerThis.apnConnections[apnConfig.bundleId] = connection; connection.on("transmitted", function () { stats.addApnSuccess(1); }); logger.info("apnConnections init for %s maxConnections %s", apnConfig.bundleId, apnConfig.maxConnections); });
production: prod // by default: false unless the NODE_ENV environment variable is set to "production" }; //console.log("[APNS] parameters:", CONN_OPTIONS); var FEEDBACK_OPTIONS = { batchFeedback: true, interval: 300 }; var DEFAULT_EXPIRY = 24 * 60 * 60; // 1 day var DEFAULT_BADGE = 0; var DEFAULT_SOUND = 'ping.aiff'; //console.log("[APNS] Connecting..."); var apnConnection = apn.Connection(CONN_OPTIONS); // listen to all events apnConnection.on('connected', function() { console.log('[APNS] is connected'); }); apnConnection.on('transmitted', function(data, dest) { console.log( '[APNS] transmitted:', (data || {}).compiledPayload, 'to', (dest || {}).token || '(unknown)' ); });