无需通话即可自动检查RESTful服务?

时间:2013-10-17 01:09:51

标签: ajax web-services rest jax-rs

想象一下这个场景: 您有一个由多个应用程序查询/更新的数据库,并且您还拥有使用该数据库的RESTful服务。

是否有可能以某种方式通知客户端(网页或其他)数据库有新数据而不必每秒调用Web服务来查找新数据?

这个问题更多的是“被动”调用,就像RMI方法一样。

我可能正在做梦,但必须有办法在没有每隔XX秒进行一次AJAX调用的情况下这样做。

PS。如果真的需要AJAX调用,那么有更好/更聪明的方法吗?

对不起,如果这个问题太傻了。

我很感激你的时间。

2 个答案:

答案 0 :(得分:1)

这"反应"你正在谈论的事情又是“事件驱动的”#34; webservices(例如,您可以通过使用node.js来实现)。事件更新通常通过"消息队列提供服务"多个消费者收听以获取更新,并做出相应的反应。

特别是,在消息队列中侦听这些更新的行为通常是通过publisher subscriber设计模式完成的。这些日子非常流行,甚至被纳入一些较新的数据库。

Check out Redis DB's pub sub feature as an example.

答案 1 :(得分:0)

如果该服务真的是RESTful,而不仅仅是使用REST作为流行语,那么我想最简单的方法就是使用If-Modified-Since标头不断轮询的资源。该响应应该位于某个缓存中,客户端应该从那里获取它,并且当有新数据时应该重置缓存。

另一方面,如果您并不真正关心REST约束,那么您可以通过消息队列,pub-sub等跟踪Kristian的响应并使用某种通知。

两者之间的妥协是通知只告诉客户服务器有新数据,而不是通知。这可能就是我做的。