Мы пытаемся использовать Firebase Cloud Messaging (FCM) с node.js в безсерверной среде (AWS Lambda).Ниже приведена наша простая функция отправки push-уведомлений на устройство с помощью SDK.
FCM входит в систему, и все, кажется, работает.Однако процесс node.js не завершается автоматически после вызова этой функции.Это означает, что нам выставили счет за дополнительное время, проведенное в безсерверной среде.
Мы можем использовать firebaseApp.delete()
, чтобы принудительно закрыть приложение, но это кажется чрезмерным.Как правильно сделать так, чтобы процесс node.js остановился сам по себе?
var admin = require("firebase-admin")
// authorize for Firebase with private key cleaned up to avoid PEM formatting error
let firebaseApp = admin.initializeApp({
databaseURL: process.env.GCLOUD_FIREBASE_DB_URL,
credential: admin.credential.cert({
projectId: process.env.GCLOUD_ADMIN_PROJECT_ID,
clientEmail: process.env.GCLOUD_ADMIN_CLIENT_EMAIL,
privateKey: process.env.GCLOUD_ADMIN_PRIVATE_KEY.replace(/\\n/g, "\n"),
})
})
async function sendPush(options) {
let msg = {
notification: {body: options.body, title: options.title},
token: options.token
}
const dryRun = true
firebaseApp.messaging().send(msg, dryRun)
.then((msgId) => {
// Response is a message ID string.
console.log(`Successfully sent a push to ${msgId}.`)
return msgId
})
// No catch as errors are expected to be handled outside this function
}
module.exports = sendPush