簡體   English   中英

如何在服務器上對推送通知建模

[英]How to model Push Notifications on server

簡要說明

好吧,自從很多天以來,我一直在尋找這個問題的答案,但似乎有“如何創建推送通知服務器”之類的答案。 我正在使用node.js,使用sock.js“創建”推送通知服務器非常容易(我聽說socket.io與sock.js相比並不好)。 到這里沒問題。 但是我想要的是如何為這樣的服務器建模

詳細資料

好的,所以,假設我有一個有聊天服務的應用程序(只是一個例子,實際情況就如您所猜測的那樣大)。 一個人在房間中發送消息,房間中的所有人員都會收到通知。 但是我想要的是“有狀態”聊天-也就是說,我想將消息存儲在數據存儲中。 麻煩來了。 將消息存儲在數據庫中,然后告訴所有人“嘿,有消息給您”。 當我們只需要對應用程序的一部分進行實時活動時,這似乎很容易。 當整個應用基於實時通信時該怎么辦? 除此之外,我還想擁有一個RESTful API。

我的解決方案(對此我不太滿意)

我想到的是:(當然是在服務器端)

                 Data Store
                     ||
                 Data Layer (which talks to data store)
                     ||
            ------------------
            |                |
     Real-Time Server   Restful server

在這里,實時服務器偵聽數據層發布的有趣事件。 每當發生有趣的事情時,服務器都會通知客戶端。 但是哪個客戶呢? -這是我的方法的問題

希望您能有所幫助。 :)

更新

我想我忘記強調我問題的重要部分。 如何實現發布訂閱系統? (注意:我不需要實際的代碼,我會自己管理;只有在需要幫助的情況下,該如何做)。 問題是編寫代碼時我很困惑-怎么做(我對此問題的困惑很明顯)。 請提供一些參考閱讀或關於如何開始這件事的建議嗎?

我不確定我是否理解正確; 但我將總結我的閱讀方式:

  1. 我們有一個實時聊天服務器,該服務器使用套接字連接將新消息發布到所有連接的客戶端。
  2. 我們有一個數據庫,我們希望保留聊天記錄。
  3. 我們還有一個寧靜的界面來訪問實時服務器,以懶惰的方式獲取當前的聊天記錄。

您想以這種方式構建系統:

當前系統架構

在上圖中,我用紫色曲線圈出的組件要像所有其他客戶端一樣進行更新。 我對嗎? 我不知道您對“數據層”的含義,但我認為這是一個守護程序,它將寫入數據庫並與其他組件連接數據庫。

在這種體系結構中,一切都可以按照您的意圖進行。 我的意思是DataStore由服務器連接以訪問數據,可能查詢客戶端憑據以進行身份​​驗證,可能會讀取用戶首選項等。

出於對這些組件的其他期望,我的意思是允許像連接的客戶端一樣更新這些組件,為什么不也允許它們成為客戶端呢?

后端組件與實時服務器的連接的建議設計。

您的實時服務器是客戶端服務器; 但是如果我們更喜歡使用更通用的命名方式,它也是數據層或數據庫服務器的客戶端。 因此,我們已經知道,沒有什么可以阻止服務器成為客戶端。 那么,為什么我們的數據庫系統和Restful系統也不能成為客戶端? 將它們連接到實時服務器的方式與連接瀏覽器和其他客戶端的方式相同。 讓他們喜歡成為其中一員。 :)

我希望我沒有完全理解所有錯誤,這對於這個問題是有道理的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM