我一直在尝试使用Firebase云消息传递和一些节点包来设置Web推送通知服务器/客户端架构。经过多个教程后,我真的很困惑。
我尝试了“web-push”节点包,但它需要gcm-key,正如谷歌宣布的那样,GCM现在正在转向FCM。所以,我查看了另一个名为“fcm-push”的软件包,但它不支持VAPID。我甚至不确定为什么VAPID需要单独使用。所以,我在这里提出一些直接的问题 -
那么,我应该同时使用这两个包吗?如果是,那么我应该依赖哪个包来做哪个功能?
答案 0 :(得分:2)
为什么有两个单独的密钥,即GCM / FCM和VAPID?
GCM / FCM api密钥是一种传统的非标准身份验证方法。 对于新项目,您应该使用VAPID 这是一种standard自动方式,通过推送服务(例如FCM,Mozilla autopush)对您的网络应用进行身份验证。
当您订阅用户推送通知时,基本上使用VAPID将公钥与端点相关联。然后,当您要向该端点发送通知时,必须使用私钥对消息进行签名。
我在Pushpad工作,几个月前我们已经从GCM / FCM api密钥迁移到VAPID。现在,Pushpad支持开箱即用的VAPID:这意味着如果您使用Pushpad,则无需手动配置VAPID,因为VAPID的所有配置都会自动发生。我强烈建议check it out。
一旦我从客户端获取订阅密钥到服务器,我是否需要将它们存储在数据库中?有没有其他方法可以用来保存它们?
可能你会混淆两种不同的键:
看起来“fcm-push”软件包不支持VAPID密钥,它的文档仅提及iOS和Android。
FCM还用于向原生应用发送推送通知,但VAPID仅适用于网络推送。宝石可能意味着与原生应用程序一起使用,而不是与网络推送一起使用。
另一方面,“web-push”包不支持FCM。
是的,因为你需要使用VAPID,这是标准。 FCM也支持VAPID。
注意:正如其他答案所述,“web-push”软件包也可能支持FCM - 但是我不建议对新项目使用FCM api密钥(使用VAPID,这是IETF标准!)
你说我需要在订阅用户时将VAPID公钥与所有端点关联。通过关联它到底意味着什么?
您可以在这些文章中阅读有关VAPID的更多信息:
答案 1 :(得分:0)
web-push
支持VAPID和FCM。如果您为较旧的Chrome版本和浏览器(如Opera和Samsung Internet Browser)提供GCM API密钥,它也支持GCM,但它不是必需的,它是可选的。