我正在使用 Restful Web Application 。我将前端和后端分开,使用 Angular2作为前端, NodeJS作为后面。
我想使用通知并将其推送给特定用户。
示例:如果我的用户决定订阅,当我决定发送一个或者我的NodeJS服务器想要向用户组发送消息时,他可以收到桌面通知。
我已经看到了很多前端和后端的不同模块,但我有点迷失。
在架构上,我应该如何在我的应用程序中添加此服务? 我应该使用特定的节点模块吗?
答案 0 :(得分:2)
您谈论桌面通知。我想您希望用户在浏览器或应用关闭时也收到通知。在这种情况下,您需要Service Worker
。 Service Worker
是您的浏览器在后台运行的脚本,当浏览器或应用关闭时,该消息将被推送到该脚本。有关Service Workers
,read 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