2017-05-31 78 views
2
的NodeJS我

我工作在一個REST的Web應用。我把前端和後端,使用Angular2用於前,並爲的NodeJS後面推送通知的RESTful Web應用程序Angular2/

我想用通知和他們推到特定的用戶。

樣品:如果我的用戶決定訂閱,當我決定送一個,或者如果我的NodeJS serveur希望將消息發送給用戶組,他可以得到一個桌面通知。

我已經看到了很多針對前端和後端型動物模塊,但我有點迷失。

建築上,我應該如何在我的應用程序中添加此服務? 我應該使用特定的節點模塊嗎?

+0

您是否找到解決方案?我也有同樣的問題。因爲您的目標是將通知發送到桌面,所以Websockets並不是解決方案,因此用戶可以關閉瀏覽器並接收通知。請分享您的知識以幫助我和其他人。你可以回答你自己的問題,人們可以給你信貸。 –

+0

最後我們沒有整合這個功能。當時它是新的,所以我希望現在整合起來更容易。如果您發現了任何問題,請不要猶豫分享您的解決方案!我認爲這種需求應該是平常的。 –

回答

1

請您談一下桌面通知。我想你希望用戶在瀏覽器或應用程序關閉時也能收到它的通知。在這種情況下,你需要一個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 - 祝你好運! –

0

您可以使用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爲例。 –