2015-04-29 47 views
1

對於我們的應用成品加工,通知客戶端,服務器已經在火力

  • 我們使用AngularJS作爲我們的前端框架和Java在我們的應用程序的服務器端。
  • 我們希望將我們的應用程序與Firebase集成,但我們遇到以下問題。

現在,讓我們假設以下情形:

  • 客戶端更改存儲在任何火力地堡URL
  • 對象服務器偵聽這種變化,並在該對象上開始處理
    • 我們可以假設這個過程需要5到10秒。
  • 但是,客戶端在不等待服務器響應的情況下更改其狀態。

我們的問題是:服務器將如何通知客戶有關完成處理?

請指導我們如何實現此功能。 Firebase中是否有內置機制來執行此操作?

+1

您所描述的內容通常是使用工作隊列實現的。有關此類隊列的示例,請參閱https://github.com/firebase/firebase-work-queue。 –

回答

1

就像服務器監聽數據庫中的更改一樣,客戶端也可以這樣做。當客戶端更改數據庫中的對象時,它可以創建一個新的屬性,專門用於服務器在完成處理時發出信號。客戶端然後監聽對該屬性的更改,並且服務器在完成處理後對其進行更改。你的數據結構可以是這個樣子:

{ 
    serverjobs: { 
    job1: { 
     input: { 
     // the client's input for the job 
     }, 
     finished: false 
    }, 
    job2: { 
     input: { 
     // the client's input for the job 
     }, 
     output: { 
     // the server's output for the job 
     } 
     finished: true 
    } 
    } 
} 

服務器會聽serverjobs,並開始在崗位上工作,當客戶端添加它。客戶端爲每個作業提供服務器需要的任何數據,如input。客戶端還收聽工作的finished值。當服務器完成作業時,它將finished值設置爲true,並將作業結果作爲output提供。客戶注意到finished值的更改,並可以採取output並採取相應措施。

+1

嗨@Marein這種方法將工作,但有沒有建立在firebase的機制來做到這一點,因爲它是clent服務器體系結構的基本要求? – Keshav

+0

不是我所知道的。 – Marein

+1

弗蘭克已經回答了這個問題。由於Firebase是一種BaaS(即替換客戶端到服務器的體系結構),因此客戶端到服務器的體系結構要求將嵌入到API中並沒有任何意義。通過將Firebase作爲中央機構並將所有服務(客戶端或服務器)轉換爲具有不同特權(即使用隊列)的數據使用者,完成這一切非常簡單。 – Kato