如何使用java为请求发送多个响应

时间:2018-03-27 06:31:32

标签: java spring-boot

我正在尝试以特定的时间间隔发送来自客户端的http请求的多个响应。我正在使用Spring Boot RESTful Web服务器,它接收来自AngularJs客户端的请求。 RESTFul Web服务将从客户端获取作业列表,我需要在每个作业完成后向客户端发送响应。

@PostMapping("/runExecution")
public Object sendingMultipleResponse(String input){

  for(Object obj : ListOfJobs){
    //performs business logic
    return object;
  }

}

考虑列表中有10个作业,我需要在执行每个作业后将结果返回给请求。 注意:对于来自AngularJs的单个请求,我需要发送多个响应

3 个答案:

答案 0 :(得分:1)

您可以将WebSocket用于您的方案。 WebSocket提供服务器和客户端之间的全双工通信通道。 当客户端在服务器上发送消息(在这种情况下说request)时,服务器将开始处理消息,服务器将响应客户端的响应消息(它将是response),如发送状态正在处理的消息或由WebSocket发送的消息触发的作业状态。 请参阅link

答案 1 :(得分:0)

您可以尝试以下设计:
1)客户端向服务器发送多个作业请求
2)服务器开始处理作业并将响应保存在某个DB中
3)客户端从服务器以某个时间间隔拉出响应,并获得已完成作业的响应

它不是一个完美的解决方案,因为客户端正在进行多次拉动,需要知道何时停止(在完成所有作业之后)但是它很容易实现并降低了网络依赖性(因为不需要保持打开连接到服务器)。

答案 2 :(得分:0)

我正在关注以下两个教程,也许他们也会帮助你。 有问题的弹簧模块是 Spring Reactor https://projectreactor.io/

https://dzone.com/articles/spring-boot-server-sent-events-tutorial

https://dzone.com/articles/reactor-core-tutorial