推送通知的RESTful Web应用程序Angular2/

问题描述:

的NodeJS我

我工作在一个REST的Web应用。我把前端和后端,使用Angular2用于前,并为的NodeJS后面推送通知的RESTful Web应用程序Angular2/

我想用通知和他们推到特定的用户。

样品:如果我的用户决定订阅,当我决定送一个,或者如果我的NodeJS serveur希望将消息发送给用户组,他可以得到一个桌面通知。

我已经看到了很多针对前端和后端型动物模块,但我有点迷失。

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

+0

您是否找到解决方案?我也有同样的问题。因为您的目标是将通知发送到桌面,所以Websockets并不是解决方案,因此用户可以关闭浏览器并接收通知。请分享您的知识以帮助我和其他人。你可以回答你自己的问题,人们可以给你信贷。 –

+0

最后我们没有整合这个功能。当时它是新的,所以我希望现在整合起来更容易。如果您发现了任何问题,请不要犹豫分享您的解决方案!我认为这种需求应该是平常的。 –

请您谈一下桌面通知。我想你希望用户在浏览器或应用程序关闭时也能收到它的通知。在这种情况下,你需要一个Service Worker。 A Service 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保持连接。

+0

太棒了,这正是我所寻找的信息。 Angular 5似乎填补了这些话题的空白。 –

+1

@LewisGodgiven - 祝你好运! –

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

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

+0

事实上,我想如果我使用WebSockets,我的客户端应用程序必须打开。如果我了解通知的工作原理,即使浏览器已关闭,我也应该能够向用户发送桌面通知。查看通知:https://developer.mozilla.org/en/docs/Web/API/notification –

+0

在服务器上,您可以检查websocket是否已关闭,以便不向通过浏览器关闭的客户端发送通知。 –

+0

我的目标是将通知发送到桌面,以便用户可以关闭他们的浏览器并收到通知:) 以https://onesignal.com/webpush为例。 –