【问题标题】:Push Notifications RESTful WebApp Angular2 / NodeJS推送通知 RESTful WebApp Angular2 / NodeJS
【发布时间】:2017-11-01 17:00:58
【问题描述】:

我正在开发一个Restful Web 应用程序。我将前端和后端分开,使用 Angular2 作为前端,使用 NodeJS 作为后端

我想使用通知并将它们推送给特定用户。

示例:如果我的用户决定订阅,当我决定发送一个或我的 NodeJS 服务器想要向用户组发送消息时,他可能会收到一个桌面通知。

我已经看到了很多不同的前端和后端模块,但我有点迷茫。

在架构上,我应该如何在我的应用程序中添加此服务? 我应该使用特定的节点模块吗?

【问题讨论】:

  • 您找到解决方案了吗?我也有同样的问题。 Websockets 不是解决方案,因为您的目标是向桌面发送通知,因此用户可以关闭浏览器并接收通知。请分享您的知识以帮助我和其他人。你可以回答你自己的问题,人们可以为此给予你信任。
  • 最后我们没有集成这个功能。当时它是新的,所以我希望现在更容易集成。如果您发现了什么,请不要犹豫,分享您的解决方案!我认为这种需要应该成为常态。

标签: node.js rest angular push-notification


【解决方案1】:

您谈论桌面通知。我猜你希望用户在浏览器或应用程序关闭时也能收到通知。在这种情况下,您需要Service WorkerService Worker 是您的浏览器在后台运行的脚本,当浏览器或应用程序关闭时,消息被推送到该脚本。对于Service Workersread this 的精彩介绍。 Angular 自 5.0.0 起在生产版本中实现了 Service Workers。点击here to read more about it.

在后端,您需要一个特殊的 Node 模块来发送通知。例如node-pushserver,但还有很多其他的。这个特殊的节点模块连接到实际发送消息的消息传递服务。您可以使用例如 Google 的跨平台消息传递解决方案 Firebase Cloud Messaging (FCM)Google Cloud Messaging (GCM) 的继任者)。它可以发送到 Web、iOS 和 Android。

在客户端,您需要注册Service Worker 以进行推送通知。然后你会得到一个endpoint,需要存储在节点服务器端。您每次都向消息服务发送带有此endpoint 的推送请求。

您还可以使用付费推送通知提供商来完成这项工作。 Click here for a list of them.

设置WebSocket 连接(如socket.io)将不起作用,因为它无法与Service Worker 保持连接。

【讨论】:

  • 太好了,这正是我正在寻找的信息。 Angular 5 似乎填补了这些主题的空白。
  • @LewisGodgiven - 祝你好运!!
【解决方案2】:

您可以使用 WebSockets 从 Node.js 服务器推送数据。将 ws 包添加到服务器的 package.json。在此处查看 BidServer.ts:https://github.com/Farata/angular2typescript/tree/master/chapter8/http_websocket_samples/server/bids

Angular 客户端在这里:https://github.com/Farata/angular2typescript/tree/master/chapter8/http_websocket_samples/client/app/bids

【讨论】:

  • 事实上我想如果我使用 WebSockets,我的客户端应用程序必须打开。如果我了解通知的工作原理,我应该能够向我的用户发送桌面通知,即使他们的浏览器已关闭?见通知:developer.mozilla.org/en/docs/Web/API/notification
  • 在服务器上,您可以检查 websocket 是否已关闭,以便不向关闭浏览器的客户端发送通知。
猜你喜欢
  • 1970-01-01
  • 2014-01-20
  • 1970-01-01
  • 1970-01-01
  • 2020-06-07
  • 2017-06-01
  • 2014-04-23
  • 1970-01-01
  • 2016-07-24
相关资源
最近更新 更多