2

I am having a function in Firebase Cloud Functions that is retrieves the user's device group id in order to send a push notification, and after sends a push notification. This works well if the function gets called only once, but if I have an array of users I want to send a push notification too, the sendPushNotification function returns error : FAILED err= { RequestError: Error: read ECONNRESET at new RequestError (/user_code/node_modules/request-promise/node_modules/request-promise-core/lib/errors.js:14:15) for every try to send push

From what i understand ECONNRESET means that the connection gets closed at one end before finishing the operation, can some help/explain me why this is:

here is my code:

function sendFollowNotification(snapshot) {
  const notificationMsg = getFollowNotificationMsg() //returns a string
  snapshot.forEach(function(singleUser, index) {
  const userId = singleUser.key;
  const userObject = singleUser.val();
  console.log("will get device group")

  if (index + 1 == snapshot.numChildren()) {
    return getDeviceGroupNotificationKey(userId, "Discover new artists", notificationMsg, "", true);
  } else {
    getDeviceGroupNotificationKey(userId, "Discover new artists", notificationMsg, "", false);
  }
}


function getDeviceGroupNotificationKey(groupId, notificationTitle, notificationBody, notificationSubject, shouldReturn) {
    const pathToDeviceGroup = admin.database().ref('deviceGroups').child(groupId);

    pathToDeviceGroup.once("value").then( function(snapshot) {  

      const deviceGroupObj = snapshot.val();
      const notification_key = deviceGroupObj.notification_key;

      console.log("got notification key")
      console.log(notification_key)

      if (notification_key !== undefined) {
          return sendPushToDeviceGroupOld(notification_key, notificationTitle, notificationBody, "notificationKeyOld2", notificationSubject, shouldReturn);
      } else {
          return
      }

    }).catch(reason => {
      console.log("user device group not there")
      return
  })

}


function sendPushToDeviceGroupOld(notification_key, title, body, subject, message, shouldReturn) {
console.log('sending push to ' + notification_key)
const serverKey = '-';
const senderId = '-';

const options = {
  method: 'POST',
  uri: 'https://fcm.googleapis.com/fcm/send',
  headers: {
   'Authorization': 'key=' + serverKey,
   'project_id': senderId
  },
  body: {
   to: notification_key,
   data: {
    subject: message
   },
   notification: {
     title: title,
     body: body,
     badge: 1,
     sound: "default",
    },
   priority : 'high',
   content_available: true
  },
  json: true
};

  return rqstProm(options)
  .then((parsedBody) => {
    console.log('SUCCESS response=', parsedBody);
    return        
  })
  .catch((err) => {
    console.log('FAILED', err);
    return
  });
}
anho
  • 1,705
  • 2
  • 20
  • 38

0 Answers0