我正在尝试以特定的时间间隔发送来自客户端的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的单个请求,我需要发送多个响应
答案 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