推送通知RESTful WebApp Angular2 / NodeJS

时间:2017-05-31 18:39:54

标签: node.js rest angular push-notification

我正在使用 Restful Web Application 。我将前端和后端分开,使用 Angular2作为前端 NodeJS作为后面

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

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

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

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

2 个答案:

答案 0 :(得分:2)

您谈论桌面通知。我想您希望用户在浏览器或应用关闭时也收到通知。在这种情况下,您需要Service WorkerService Worker是您的浏览器在后台运行的脚本,当浏览器或应用关闭时,该消息将被推送到该脚本。有关Service Workersread this的精彩介绍。自5.0.0以来,Angular在生产版本中实现了Service Workers。 Klik 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保持联系。

答案 1 :(得分:0)

您可以使用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