我工作在一個REST的Web應用。我把前端和後端,使用Angular2用於前,並爲的NodeJS後面。推送通知的RESTful Web應用程序Angular2/
我想用通知和他們推到特定的用戶。
樣品:如果我的用戶決定訂閱,當我決定送一個,或者如果我的NodeJS serveur希望將消息發送給用戶組,他可以得到一個桌面通知。
我已經看到了很多針對前端和後端型動物模塊,但我有點迷失。
建築上,我應該如何在我的應用程序中添加此服務? 我應該使用特定的節點模塊嗎?
我工作在一個REST的Web應用。我把前端和後端,使用Angular2用於前,並爲的NodeJS後面。推送通知的RESTful Web應用程序Angular2/
我想用通知和他們推到特定的用戶。
樣品:如果我的用戶決定訂閱,當我決定送一個,或者如果我的NodeJS serveur希望將消息發送給用戶組,他可以得到一個桌面通知。
我已經看到了很多針對前端和後端型動物模塊,但我有點迷失。
建築上,我應該如何在我的應用程序中添加此服務? 我應該使用特定的節點模塊嗎?
請您談一下桌面通知。我想你希望用戶在瀏覽器或應用程序關閉時也能收到它的通知。在這種情況下,你需要一個Service Worker
。 A 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
保持連接。
太棒了,這正是我所尋找的信息。 Angular 5似乎填補了這些話題的空白。 –
@LewisGodgiven - 祝你好運! –
您可以使用WebSockets從Node.js服務器推送數據。將ws包添加到您的服務器的package.json中。看看這裏的BidServer.ts:https://github.com/Farata/angular2typescript/tree/master/chapter8/http_websocket_samples/server/bids
事實上,我想如果我使用WebSockets,我的客戶端應用程序必須打開。如果我瞭解通知的工作原理,即使瀏覽器已關閉,我也應該能夠向用戶發送桌面通知。查看通知:https://developer.mozilla.org/en/docs/Web/API/notification –
在服務器上,您可以檢查websocket是否已關閉,以便不向通過瀏覽器關閉的客戶端發送通知。 –
我的目標是將通知發送到桌面,以便用戶可以關閉他們的瀏覽器並收到通知:) 以https://onesignal.com/webpush爲例。 –
您是否找到解決方案?我也有同樣的問題。因爲您的目標是將通知發送到桌面,所以Websockets並不是解決方案,因此用戶可以關閉瀏覽器並接收通知。請分享您的知識以幫助我和其他人。你可以回答你自己的問題,人們可以給你信貸。 –
最後我們沒有整合這個功能。當時它是新的,所以我希望現在整合起來更容易。如果您發現了任何問題,請不要猶豫分享您的解決方案!我認爲這種需求應該是平常的。 –