2015-04-29 45 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