Node.js 如何与“合作”;网络推送“;及;fcm推送“;同时执行节点包?

Node.js 如何与“合作”;网络推送“;及;fcm推送“;同时执行节点包?,node.js,google-cloud-messaging,firebase-cloud-messaging,web-push,vapid,Node.js,Google Cloud Messaging,Firebase Cloud Messaging,Web Push,Vapid,我一直在尝试使用Firebase云消息和一些节点包来设置web推送通知服务器/客户端体系结构。在看过多个教程之后,我真的很困惑 我尝试了“web推送”节点包,但它需要gcm密钥,正如谷歌宣布的那样,gcm现在正在转向FCM。所以,我查看了另一个名为“fcm push”的包,但它不支持乏味的。我甚至不知道为什么需要单独使用乏味。所以,我将在这里提出一些直接的问题- 为什么有两个单独的键,即GCM/FCM键和VAPID键 一旦我从客户机获取到服务器的订阅密钥,我是否需要将它们存储在数据库中?有没有

我一直在尝试使用Firebase云消息和一些节点包来设置web推送通知服务器/客户端体系结构。在看过多个教程之后,我真的很困惑

我尝试了“web推送”节点包,但它需要gcm密钥,正如谷歌宣布的那样,gcm现在正在转向FCM。所以,我查看了另一个名为“fcm push”的包,但它不支持乏味的。我甚至不知道为什么需要单独使用乏味。所以,我将在这里提出一些直接的问题-

  • 为什么有两个单独的键,即GCM/FCM键和VAPID键
  • 一旦我从客户机获取到服务器的订阅密钥,我是否需要将它们存储在数据库中?有没有其他方法可以用来保存它们
  • 看起来“fcm推送”软件包不支持乏味的按键,它只提到了iOS和Android
  • 另一方面,“web推送”包不支持FCM
那么,我应该同时使用这两个包吗?如果是的话,那么我应该依靠什么软件包来完成什么功能

为什么有两个单独的键,即GCM/FCM键和VAPID键

GCM/FCM api密钥是一种传统的非标准身份验证方法。 对于新项目,您应该使用VAPID,这是一种通过推送服务(如FCM、Mozilla autopush)自动验证web应用的方法

基本上,当您订阅用户推送通知时,您可以使用VAPID将公钥与端点关联。然后,当您想要向该端点发送通知时,必须使用私钥对消息进行签名

我在工作,几个月前我们已经从GCM/FCM api键迁移到了VAPID。现在,Pushpad支持“开箱即用”的VAPID:这意味着如果使用Pushpad,则不需要手动配置VAPID,因为所有VAPID配置都是自动进行的。我强烈建议你去

一旦我从客户机获取到服务器的订阅密钥,我是否需要将它们存储在数据库中?有没有其他方法可以用来保存它们

您可能混淆了两种不同的键:

  • 无趣密钥对:在服务器上生成一次;然后,当您使用Javascript向用户订阅web推送通知时,将公钥与所有端点相关联;您将私钥保留在服务器上,并使用它对发送的通知进行签名
  • 用于签署通知有效负载的密钥:这些密钥对于每个客户端都不同,您需要将它们与端点一起存储在服务器上只有在发送有效负载时才需要这些密钥;否则,您只需发送一个信号,然后服务人员负责从您自己的应用程序服务器下载未读通知
看起来“fcm推送”软件包不支持乏味的按键,它的文档中只提到了iOS和Android

FCM还用于向本机应用发送推送通知,但VAPID是仅用于web推送的标准。可能gem是用于本机应用程序,而不是web推送

另一方面,“web推送”包不支持FCM

是的,因为你需要使用无趣,这是标准。FCM也支持乏味

注意:如其他答案所述,“web推送”包可能也支持FCM-但是我不建议在新项目中使用FCM api键(使用VAPID,这是IETF标准!)


您说过,在订阅用户时,我需要将乏味的公钥与所有端点相关联。你把它联系起来到底是什么意思

您可以在以下文章中阅读有关VAPID的更多信息:


网络推送
确实支持乏味和FCM。如果您为较旧的Chrome版本和浏览器(如Opera和Samsung Internet Browser)提供GCM API密钥,它也支持GCM,但这不是必需的,它是可选的。

您说过,在订阅用户时,我需要将乏味的公钥与所有端点相关联。您将其关联到底是什么意思?另外,如果我只想在其中存储订阅,您建议使用哪个数据库?还建议我使用哪个节点包来处理VAPID。@AnirudhGoel我已经更新了答案(参见最后一段)。任何数据库都可以:例如,我使用PostgreSQL。对于节点包,我不知道,因为我使用了Ruby,我们从头开始为Pushpad构建了一切。请注意,
web push
确实支持VAPID,因此FCM.web-push确实支持VAPID和FCM。出于好奇,你为什么认为web push不支持FCM?我遇到了一些问题(包括报告的Chrome bug)当我从GCMAPI键迁移到VAPID时。我不建议在新项目中使用旧版GCM api密钥。我也不建议使用旧版GCM api密钥,但它是支持Opera和三星互联网浏览器所必需的。也许你指的是旧版,因为Opera的最新版本(桌面和Android)支持乏味。很高兴听到这个消息。三星的网络浏览器也支持乏味吗?