如何从 google 云函数向最终用户发送超过 4kb 的数据
How to send more than 4kb from google cloud function to end user
我编写了一个应用程序,允许用户上传带有手写文本的图像,现在 he/she 应该接收提取的文本作为 'normal'(数字)文本。
目前,我将图像上传到 google 云存储桶,然后触发 云函数,调用愿景 api。愿景 api 然后 returns 云函数内部的 JSON
结果。
现在我的问题是:如何将 JSON 结果发送回客户端?
- 我试过FCM,但是
vision api
的JSON响应超过4000字节,所以消息发送失败。 (我还需要识别文本的坐标)。出现以下错误:
...
errorInfo: {
code: 'messaging/invalid-argument',
message: 'Request contains an invalid argument.'
}
- 我听说过 PubSub,但正如他们所描述的 here ,它不适用于 服务到客户端的通信 。或者它是一个永远不会少的选择?
如何将我的云函数的“大”结果发送回客户端?
非常感谢任何帮助!感谢您抽出时间,如果有任何不清楚或遗漏的地方,我很乐意尽快添加信息。
不要使用 FCM 将视觉的实际负载 API 发送给用户。相反,将有效负载存储在云存储或云数据库(例如 Firebase 的 Firestore 或实时数据库)中,并通过数据 属性 中的 FCM 将位置发送给用户。然后,您的应用程序代码可以获取该数据 属性,并在用户准备好时读取实际的 API 响应。
GCS 通常可以方便地绕过大型物体。您可以将请求重定向到 GCS 中的任何大型对象。
- 如果是 public,只需将
Location: https://storage.googleapis.com/%3Cbucket-name%3E/some-path/some-file.json
传递给调用者
- 如果文件是私有的,创建一个短暂的 signed URL,然后像上面那样重定向到它。
这样您就不需要通过 GCF 流式传输文件,甚至不需要为此阅读文件。让 GCS CDN 为您代劳。
我编写了一个应用程序,允许用户上传带有手写文本的图像,现在 he/she 应该接收提取的文本作为 'normal'(数字)文本。
目前,我将图像上传到 google 云存储桶,然后触发 云函数,调用愿景 api。愿景 api 然后 returns 云函数内部的 JSON
结果。
现在我的问题是:如何将 JSON 结果发送回客户端?
- 我试过FCM,但是
vision api
的JSON响应超过4000字节,所以消息发送失败。 (我还需要识别文本的坐标)。出现以下错误:
...
errorInfo: {
code: 'messaging/invalid-argument',
message: 'Request contains an invalid argument.'
}
- 我听说过 PubSub,但正如他们所描述的 here ,它不适用于 服务到客户端的通信 。或者它是一个永远不会少的选择?
如何将我的云函数的“大”结果发送回客户端?
非常感谢任何帮助!感谢您抽出时间,如果有任何不清楚或遗漏的地方,我很乐意尽快添加信息。
不要使用 FCM 将视觉的实际负载 API 发送给用户。相反,将有效负载存储在云存储或云数据库(例如 Firebase 的 Firestore 或实时数据库)中,并通过数据 属性 中的 FCM 将位置发送给用户。然后,您的应用程序代码可以获取该数据 属性,并在用户准备好时读取实际的 API 响应。
GCS 通常可以方便地绕过大型物体。您可以将请求重定向到 GCS 中的任何大型对象。
- 如果是 public,只需将
Location: https://storage.googleapis.com/%3Cbucket-name%3E/some-path/some-file.json
传递给调用者 - 如果文件是私有的,创建一个短暂的 signed URL,然后像上面那样重定向到它。
这样您就不需要通过 GCF 流式传输文件,甚至不需要为此阅读文件。让 GCS CDN 为您代劳。