Javascript 维护云函数多次调用之间的持久连接

Javascript 维护云函数多次调用之间的持久连接,javascript,firebase,google-cloud-functions,Javascript,Firebase,Google Cloud Functions,我目前正在将我的firebase队列workers移动到firebase的云函数。我的一名员工通过APN和GCM向设备发送推送通知。为了通过apn发送推送通知,我使用库节点apn,其中我使用 const apn Connection=新的apn.连接(connectionOptions) 然后,我可以继续使用apnConnection向设备发送推送通知,而无需每次重新创建任务 apnConnection.pushNotification(pushNotification,设备) 我想问这样一个持

我目前正在将我的
firebase队列
workers移动到firebase的云函数。我的一名员工通过APN和GCM向设备发送推送通知。为了通过apn发送推送通知,我使用库
节点apn
,其中我使用

const apn Connection=新的apn.连接(connectionOptions)

然后,我可以继续使用
apnConnection
向设备发送推送通知,而无需每次重新创建任务

apnConnection.pushNotification(pushNotification,设备)

我想问这样一个持久性连接是否也会在多次调用Firebase函数之间保持,或者我是否需要创建此连接并在每次调用Firebase函数时将其关闭。我的Firebase函数看起来像

const functions = require('firebase-functions');
const admin = require('firebase-admin');

admin.initializeApp(firebaseConfig);

const apnConnection = new apn.Connection(connectionOptions);

exports.verifyCode = functions.database.ref('/tasks/sendPushNotification/{taskId}')
  .onWrite(event => {
    const taskSnapshot = event.data
    if(!taskSnapshot.exists()) {
      return
    }
    const task = taskSnapshot.val()

    // Create pushNotification and device from the task

    return apnConnection.pushNotification(pushNotification, device);
  })

我认为这取决于函数是否可以在调用之间保持某种状态,或者它们更像AWS lambda函数,完全无状态,因为我们只初始化admin SDK一次,我认为它在调用之间保持某种状态,但我想在查看代码之前进行检查。

虽然大多数情况下,您的函数将在同一个容器中调用,但您不能依赖于此。容器可能会被回收,或者GCF可能会启动额外的容器,以防调用的函数超过单个容器可以处理的数量

当添加新容器来处理额外的负载时,该容器是否不执行公共代码,即
admin.initializeApp(firebaseConfig);const apn Connection=新的apn.连接(connectionOptions)在我的情况下,并维护自己的
连接
?是的,它会这样做。如果你分享你遇到问题的代码,也许会更容易帮助你。我有问题的代码。我的问题是让
const apnConnection=new apn.Connection(connectionOptions)可以吗
verifyCode
云函数外部,在
verifyCode
函数内部使用
apnConnection
,或者我是否需要将其移动到函数内部,并为每次调用云函数创建新连接。根据我从您的回答和评论中了解到的情况,我认为将其置于云函数之外是可以的,因为这些函数是在一个容器中运行的,并且可以根据负载添加或删除更多的容器。