Java REST服务器到客户端的通信

Java REST服务器到客户端的通信,java,spring,rest,api,Java,Spring,Rest,Api,我正在为春季的AdnRoid应用程序开发Java API。现在我的API是100%REST和无状态的。客户端要接收数据,必须先发送请求 但是,我需要的是服务器将数据发送到客户机,而不是客户机第一次发送到服务器,只要它准备好执行任务 我认为必须在双方之间建立某种形式的对话 我的问题是:当服务器完成任务时,如何实现向客户端发送数据的功能/不知道这项任务需要多长时间/ 我应该为此开发什么样的API 一个愚蠢的解决方法是每n秒向服务器发送一个请求,但我正在寻找一种更智能的方法 有多个选项可用。你可以选择

我正在为春季的AdnRoid应用程序开发Java API。现在我的API是100%REST和无状态的。客户端要接收数据,必须先发送请求

但是,我需要的是服务器将数据发送到客户机,而不是客户机第一次发送到服务器,只要它准备好执行任务

我认为必须在双方之间建立某种形式的对话

我的问题是:当服务器完成任务时,如何实现向客户端发送数据的功能/不知道这项任务需要多长时间/

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


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

有多个选项可用。你可以选择最适合你的

  • Http长轮询—在这种情况下,服务器将保留请求,直到它准备好执行其任务为止(在您的情况下)。在这里,您不必每隔几秒钟发出多个请求(即Http轮询)

  • 服务器发送事件-在这种情况下,服务器向客户端发送更新,而无需长时间轮询。它是HTML 5的标准化部分-

  • Websockets—Websockets在双工模式下工作,并在这种模式下建立持久TCP连接。TCP连接建立后,服务器和客户端都会来回发送数据。受大多数现代浏览器支持。您可以检查Android Websocket库和Java Websocket

  • SockJs-我建议使用此选项,而不是普通的WebSocket


  • 切换到web套接字通信是否有效?通过这种方式,您可以异步通信谢谢,我马上检查。另一个选项是使用JMS主题,并让服务器在主题上放置消息当数据准备好时,客户端将侦听主题,当客户端收到主题上的消息时,客户端将调用服务器的服务来获取数据。裁判:谢谢!这可能有用,谢谢!我想我会使用WebSockets,但会与Android一起工作?与Android一起工作?这是一个服务器端代码。您需要将服务器的端点公开为websocket端点,并使用android websocket库与服务器进行连接和交互。好的,我会解决这个问题。谢谢:)