无法从 HTTPS 函数触发 Firebase 发布/订阅功能

eat*_*000 2 firebase google-cloud-pubsub google-cloud-functions

我创建了两个 Firebase 函数 - 一个是 HTTPS,我在其中向主题发布消息,另一个是 pub/sub 函数,在其中我响应发布到该主题的消息。

testPubSub.ts

import { pubsub } from "firebase-functions";
export const testPubSub = pubsub
  .topic("high-scores")
  .onPublish(async (message, context) => {
    console.log("hit test pubsub");
    return null;
  });
Run Code Online (Sandbox Code Playgroud)

testHttps.ts

import { https } from "firebase-functions";
import { messaging } from "firebase-admin";

export const testHookEndpoint = https.onRequest(async (request, response) => {
  const payload = {
    notification: {
      title: "Test title",
      body: "test body"
    }
  };

  const pubsubResponse = await messaging().sendToTopic("high-scores", payload);
  console.log("response from pubsub", pubsubResponse);
  response.send("success");
});
Run Code Online (Sandbox Code Playgroud)

HTTPS 函数似乎运行良好(200 响应)并且消息传递在响应中返回消息 ID,但是我没有看到 pub/sub 函数在 Firebase 控制台中运行。

当我查看 GCP Console 时,我看到“高分”已在 Pub/Sub 选项卡中注册为主题,并且我可以通过 Google Cloud Scheduler 触发项目中的其他 pub/sub 功能。

我不确定我为此错过了哪一步。

Dou*_*son 6

messaging().sendToTopic("high-scores", payload)正在使用 Firebase Cloud Messaging 向订阅给定主题的移动应用程序发送消息。这与 Cloud Pubsub 消息传递完全不同。这两种产品实际上没有任何共同点 - FCM 适用于移动应用程序,而 pubsub 适用于服务器。

您需要做的是使用Node pubsub SDK将消息发送到您的 pubsub 主题。