【问题标题】:Communication between Client and RESTful web services客户端和 RESTful Web 服务之间的通信
【发布时间】:2017-05-24 08:23:52
【问题描述】:

我有一个 RESTful Web 服务,它提供在客户端发送 GET 请求时返回一些数据的功能:

    @GET
    @Path("/{deviceId}")
    @Produces(MediaType.TEXT_PLAIN)
    public String getDataResource(@PathParam("deviceId") long id){
        return dataService.getData(id);
    }

这种情况下的流程是客户端发送请求 -> Web 服务返回值。但是我想问一下,当 Web 服务内部有新的数据更改时,它是否有可能自动向客户端发送响应?这意味着它不需要等待客户端发送请求来请求它。因为我想在客户端和运行在Application Server上的一些服务之间建立通信,这样客户端就可以随时从Application Server接收到最新的数据,所以我认为RESTful web Service可以作为一个解决方案。并且为了确保最新的数据会被传输到客户端,所以服务器必须发送给客户端,而不是等待客户端请求它。 RESTful Web 服务是否提供了这样的功能?

谢谢大家!

【问题讨论】:

  • google 这个“在 REST 服务中推送消息”。

标签: java web-services rest


【解决方案1】:

RESTful Web 服务是否提供这样的功能?

没有。不在您要求的上下文中。

如前所述,客户端可以定期轮询服务器上的更新。这通常是常见的选项。

另一种选择 - 在“客户端”上更新的原始服务器发布。客户端然后成为服务器本身。可行,如果您可以在“客户端”端公开服务。

也许您正在寻找的是网络套接字。它是来自客户端的长期连接,服务器可以在数据到来时不断返回。

周围有一些books,但您可以根据您使用的框架在网上搜索更多资源

【讨论】:

    【解决方案2】:

    你可以实现通知系统(观察者模式),让客户端在一定的时间间隔内轮询服务器,任何状态变化,都能得到结果。

    【讨论】:

      【解决方案3】:

      您可以使用调度程序以一定的时间间隔将数据推送到客户端。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-11-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多