我使用此代码调用Firebase HTTP云功能:
$.post('https://...my-function', {some_data: 'Data'}).always(function (data) { });
如果用户关闭浏览器,该功能将停止。即使用户退出,我怎么能做到这一点,该功能仍然会在后台完成?
答案 0 :(得分:1)
嗨,这是我每天面对来自多个客户的场景 - 网络,机器人和ios。以下是我们如何处理它的方式。
使用云功能触发器。 https://firebase.google.com/docs/functions/database-events#handle_event_data
当您调用http触发器时,请确保将推送(firebase.ref(node_name).push(event_value))事件发送到新节点。
例如:ImageUploadingRequest
在 ImageUploadingRequest 节点中编写一个云函数触发器来触发onCreate。这样,即使在用户关闭浏览器之后,您也可以为所有异步功能维护队列。完成功能后,从ImageUploadingRequest节点中删除该事件。
希望这有助于你。
答案 1 :(得分:1)
对于HTTP请求,暗示客户端对工作结果感兴趣而无需另外发出请求。使用云功能,无法无限期地继续使用HTTP类型功能。
如果您希望客户端的HTTP请求启动的某些工作能够在请求和响应的生命周期之后生存,则必须执行某些操作来调用未绑定到HTTP请求的第二个函数。
Praveen的答案描述了一种方法,但只有在你已经使用实时数据库时才有意义。它还要求您小心管理存储在数据库中的工作队列。
在我看来,使用Pub/Sub trigger作为后续函数更容易实现后续工作,无论HTTP客户端发生什么,它都会继续执行。如果您使用此技术,您的HTTP函数将执行此操作:
然后,pub / sub函数将: