2015-09-30 45 views
0

这个问题可能听起来有点抽象,回答(但我的搜索没有绊倒在一个方便的答案)或根本没有具体的,但我会尽力提供尽可能多的信息,我可以。Restful通过客户端触发的服务器响应

我正在构建一个移动应用程序,它将收集并发送传感数据到远程服务器。远程服务器将收集所有这些数据到一个mySQL数据库并进行计算(不是mysql数据库,另一个进程/程序)。我想知道的是:

在数据库中进行了一些更新后,是否可以从某个RESTful服务器向特定客户端(可能是最后一次更新的人)发送响应,使用类似于“背景线”?或者这应该通过服务器 - 客户端响应通过套接字连接完成?

一些言论:

我使用JavaEE的,春天MVC与Hibernate和Tomcat(因为我熟悉的环境,虽然在多个异步方式)。

我认为这将是一个方便的方式,因为SQL模式并不复杂,不需要安全和认证问题(这是一个原型)。

另外还有一个前端网页将不得不可视化这些数据,所以这样的后端系统看起来是一个很好的选择,可以让作业快速完成。

最后我看到这个解决方案:

Is there a way to 'listen' for a database event and update a page in real time?

我的问题是,除了页面我想用REST式服务器的消息更新客户端。

如果上述所有内容都是不必要的,并且更简单的客户端 - 服务器应用程序将证明更好,更简单,欢迎通知我。

预先感谢您。

回答

0

一般来说,你应该将数据上传到资源服务器(例如POST /widgets服务器应立即用201 Created或返回(如果创建太慢,需要发生以后)202 Accepted状态。有后几种方法情况发生,每个人都有自己的优点:

  • 轮询 - 服务器的响应包括位置字段,它的客户端可以进行轮询,直到改变发生(例如,检查更新,每一秒)这是最简单的方法和。如果您有效地使用HTTP缓存并且平均检查次数相对较少,则效率会非常高。
  • 推送通知 - 服务器在更改发生时发送推送通知,生成报告等。显然,这需要您存储客户端的详细信息和通知要求。这可能是最干净的方法,也容易扩展。对于Android(也是iOS),您可以通过Google云消息传递获得免费的推送通知。
  • 在客户端和服务器之间建立持久连接,例如使用WebSocket或低级别的TCP连接。这应该会产生最快的响应时间,但可能会导致手机电池耗尽,服务器难以扩展以及编码更复杂。
相关问题