javascript客户端上的Firebase FCM发布者/订阅者



我们正试图用Firebase在前端实现一个发布者/订阅者模型。

我们的目标:尽可能快地将JS客户端发布者的消息传递给JS客户端消费者——最好使用WebSockets。

Firebase文档主要关注Android/iOS设备,但并没有很好地阐明服务器端和客户端JS解决方案之间的区别。

我所理解的是,我们主要需要将设备与服务器上的主题相关联,然而,我不清楚我们是否可以在没有服务器交互的情况下发布/使用该主题。

https://github.com/firebase/quickstart-js/blob/8a5887858ea672efbeebabd85c057415809b9a8c/messaging/index.html

此示例演示了对主题的订阅和处理传入消息,但是,是否也可以直接发布到该主题?

创建主题后,可以通过在客户端订阅客户端应用程序实例到主题或通过服务器API向主题发送消息。如果这是您第一次构建FCM的发送请求,请参阅服务器环境和FCM指南以了解重要的背景和设置信息。

(取自https://firebase.google.com/docs/cloud-messaging/ios/topic-messaging)这里他们提到了一个事实,一个人可以直接从客户那里订阅一个主题?为什么呢从上面的文档和示例来看,这似乎不可能?

有一个NodeJS发布到主题的例子:

var topic = 'highScores';
var message = {
data: {
score: '850',
time: '2:45'
},
topic: topic
};
// Send a message to devices subscribed to the provided topic.
admin.messaging().send(message)
.then((response) => {
// Response is a message ID string.
console.log('Successfully sent message:', response);
})
.catch((error) => {
console.log('Error sending message:', error);
});

发送此客户端是否可行?

FCM的设计期望消息从后端传递并在前端接收。不建议使用其他任何东西。

您当然可以自由尝试使用REST API从前端发送消息,但您将面临安全问题,因为您必须向客户端应用程序提供服务帐户详细信息。如果你像这样暴露你的安全帐户凭据,任何人都可以接受它,并随意向你的应用程序发送消息(可能更多,取决于授予该帐户的权限(。只是不要这样做-只将您的服务帐户凭据保存在安全的后端。

FCM文档中的示例都显示了使用后端SDK(主要是Firebase Admin SDK(发送消息。坚持下去。

最新更新