Firebase 函数:如何根据客户端的位置调用区域函数



设置

我在世界各地部署了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映射到谷歌为其云功能提供的位置。

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

HTTPS负载均衡器将是直接的解决方案
或者,如果您有几个相距较远的地区,您可以使用您在问题中提到的时区或位置信息。我在这里发布了一个类似的代码片段。

最新更新