REST服务器到客户端的通信

时间:2016-09-24 18:39:25

标签: java spring rest api

我正在为Spring中的Adndroid应用开发Java API。现在我的API是100%REST和无状态。要使客户端接收数据,它必须先发送请求。

然而,我需要的是服务器将数据发送到客户端 /而不是客户端发送到服务器fisrt /当它准备好它的任务时。

我认为必须在双方之间创建某种会话。

我的问题是:如何在服务器准备完成任务后,如何实现SERVER向CLIENT发送数据的功能? /不知道任务需要多长时间./

我应该为此目的开发什么样的API?

一个愚蠢的解决方法是每隔n秒向服务器发送一个请求,但我正在寻求更智能的方法。

1 个答案:

答案 0 :(得分:4)

有多种选择。你可以选择最适合你的。

  1. Http Long Polling - 在此,服务器保留请求,直到它完成任务(在您的情况下)。在这里,您不必每隔几秒钟发出多个请求(这是Http轮询)。

  2. 服务器发送事件 - 在此,服务器将更新发送到客户端而不进行长轮询。它是HTML 5的标准化部分 - https://www.w3.org/TR/eventsource/

  3. Websockets - 好吧,websockets以双工模式工作,并建立持久的TCP连接。建立TCP连接后,服务器和客户端都会来回发送数据。大多数现代浏览器支持。您可以检查Android Websocket Library,如autobahn和Java websocket。

  4. SockJs - 我建议使用此选项而不是普通的WebSocket。 http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#websocket-fallback-sockjs-enable

相关问题