Node.js 带有Angular2的服务工作者推送通知

Node.js 带有Angular2的服务工作者推送通知,node.js,push-notification,angular,service-worker,progressive-web-apps,Node.js,Push Notification,Angular,Service Worker,Progressive Web Apps,我试图拼凑出通过服务人员向用户发送推送通知的一般工作流程 我一直在学习Google开发者服务人员推送通知教程,目前正在考虑如何在一个基于用户的小型web应用程序中实现这类功能,以便进行实验 在我看来,支持推送通知的web应用程序的一般工作流程如下: 客户端访问应用程序 服务工作者生成推送通知端点 客户端将端点发送到服务器 服务器将端点与为其生成端点的当前用户相关联 每当你的应用程序说值得通知的事情发生时,服务器就会抓取与用户关联的推送通知端点,点击它向任何用户设备发送推送通知(可能是Chrom

我试图拼凑出通过服务人员向用户发送推送通知的一般工作流程

我一直在学习Google开发者服务人员推送通知教程,目前正在考虑如何在一个基于用户的小型web应用程序中实现这类功能,以便进行实验

在我看来,支持推送通知的web应用程序的一般工作流程如下:

  • 客户端访问应用程序
  • 服务工作者生成推送通知端点
  • 客户端将端点发送到服务器
  • 服务器将端点与为其生成端点的当前用户相关联
  • 每当你的应用程序说值得通知的事情发生时,服务器就会抓取与用户关联的推送通知端点,点击它向任何用户设备发送推送通知(可能是Chrome 50+中的数据负载等)

基本上,我只是想确认我对这项技术的总体实现想法是准确的,否则如果我遗漏了什么,我会得到反馈。

你说得很好,有些细节不太正确(但这主要是措辞上的,可能是为了个人口味)

  • 客户端访问应用程序
  • 注册要用于推送消息的服务辅助程序
  • 使用服务工作者注册向用户订阅推送消息,此时用户代理将配置端点+用于加密有效负载的附加值(如果用户代理支持)
  • 客户端将端点发送到服务器
  • 服务器存储端点和数据以供以后使用(如果服务器具有用户帐户,则服务器可以将端点与当前用户关联)
  • 当服务器希望向用户发送通知时,它会抓取适当的端点并调用它们,这将唤醒服务工作者,然后服务工作者可以显示通知

Chrome 50+提供了有效负载支持,在撰写本文时,有效负载是Firefox中的支持,但在3个不同版本的Firefox中,有效负载使用了3种不同的加密版本,因此我会等待有效负载支持故事在使用/依赖它之前稍微整理一下。

对不起,不清楚你的问题是什么,你能重新表述一下哪里有困惑/担忧吗?干杯Matt@GauntFace很抱歉为了清楚起见,我重写了。我只是想看看我在应用程序中实现这一点的想法是否准确,或者是否有更简单的方法来实现它!推送通知终结点与特定的服务工作者关联是否正确?我感到困惑的一件事是,假设用户在两个不同的设备上加载站点(生成服务器保留的两个不同的推送通知端点)。假设一个站点更新进来,一个新的服务工作者注册(生成了新的推送通知端点),现在用户在数据库中可能有4个端点与之关联,但只有两个有效端点……这种模式继续下去,我们有50个端点/用户,其中只有一对是“最新的”…似乎会导致大量泄漏随着新端点的生成,处理正确的端点似乎有点困难这方面的事情很少:-用户代理可能不一定会对新的服务工作者发出新的推送订阅(端点+其他信息)-当您使用推送子描述发送推送消息时,响应将告诉您订阅是否仍然有效-在这种情况下,您可以清除旧订阅-如果它成为一个问题/问题,则可以使用indexdb之类的工具跟踪以前没有的订阅,并检测更改并使用新订阅删除旧的推送订阅