【问题标题】:Firebase Function: How to call regional function based on client's locationFirebase 函数:如何根据客户端位置调用区域函数
【发布时间】:2023-01-29 02:45:45
【问题描述】:

设置

我在全球范围内部署了 Firebase 函数,如下所示:

// index.ts

const regionArr = ["europe-west3", "us-central1", "asia-south1"];

exports.superDuperFunction = 
  functions.region(...regionArr).https.onCall(async (data, context) => { ... }

我按如下方式调用函数:

// flutter.dart

HttpsCallableResult response =
  await FirebaseFunctions.instanceFor(region: "europe-west3")
    .httpsCallable('createCheckoutSession')
    .call(<String, dynamic>{ ... } 

计划 (tm)

我想将具有相同代码库的应用程序部署到多个区域。我想避免对 Firebase 函数的位置进行硬编码,并避免在每次部署时修改应用程序的源代码。

问题

应用程序如何检测其区域并动态调用最近的函数:["europe-west3", "us-central1", "asia-south1"]

如果在亚洲,请致电asia-south1,如果在欧洲,请致电europe-west3

可能的解决方案

一种选择是将设备的 locale 映射到最合适的位置。但这需要将所有可能的locale映射到谷歌手动为其云功能提供的位置。

必须有更好、更通用的解决方案。

【问题讨论】:

    标签: flutter firebase google-cloud-functions geolocation


    【解决方案1】:

    HTTPS load balancer 将是直接的解决方案。
    或者,如果您有几个相距很远的区域,您可以使用问题中提到的时区或位置信息。我已经发布了一个类似的代码 sn-p here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-18
      • 2016-06-27
      • 2019-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多