firebase 如何调用离用户最近的云函数

qgzx9mmu  于 2023-01-14  发布在  其他
关注(0)|答案(1)|浏览(120)

我有一个像这样的云功能,它已经被设置为在多个地区运行。

export const cloudFunction = functions
    .region(["asia-south1", "us-central1", "europe-west1", "southamerica-east1"])
    .https.onCall(async (data, context) => {});

如何调用离用户最近的云函数区域?从任何客户端框架?

ffscu2ro

ffscu2ro1#

每个云功能都有自己的URL,其中包含区域,因此您必须根据用户自己的时区找到最接近的区域,并在客户端指定区域。例如,一种方法如下:

const getClosestGcpRegion = () => {
  const regions = ['asia-south1', 'us-central1', 'europe-west1']
  const regionOffsets = {
    'asia-south1': '+05:30',
    'us-central1': '-06:00',
    'europe-west1': '+01:00',
  }

  let closestRegion = ''
  let closestOffset = Number.MAX_SAFE_INTEGER

  for (const region of regions) {
    const offset = regionOffsets[region].split(':')
    const offsetMinutes = Number(offset[0]) * 60 + Number(offset[1])
    const offsetDiff = Math.abs(DateTime.local().offset - offsetMinutes) 

    if (offsetDiff < closestOffset) {
      closestOffset = offsetDiff
      closestRegion = region
    }
  }

  console.log({ closestRegion })
  return closestRegion;
}

export const functions = getFunctions(app, getClosestGcpRegion())

或者,也 checkout 全球外部HTTP(S)负载平衡器与云功能,可以帮助您实现相同的目标.

相关问题