我试图在一定的时间间隔内发送来自客户端的http请求的多个响应,我使用Spring web serives,它接收来自AngularJs客户端的请求。RESTFul web服务将从客户端获取作业列表,我需要在每个作业完成后向客户端发送响应。
@PostMapping("/runExecution")
public Object sendingMultipleResponse(String input){
for(Object obj : ListOfJobs){
//performs business logic
return object;
}
}考虑到列表中有10个作业,执行每个作业后,我需要将结果返回给请求。注意:对于AngularJs的单个请求,我需要发送多个响应。
发布于 2018-03-27 07:43:22
您可以在您的场景中使用WebSocket。WebSocket提供服务器和客户端之间的全双工通信通道。当客户端在服务器上发送消息(在本例中为request )时,服务器将开始处理该消息,并且服务器将使用响应消息(它将是response)响应到客户端,例如发送正在处理的消息的状态或通过WebSocket发送的消息触发的作业状态。请参阅链接
发布于 2018-03-27 06:46:26
您可以尝试以下设计:
1)客户端向服务器发送多个作业请求
2)服务器开始处理作业,并将响应保存在某些DB中。
3)客户端在某个时间间隔从服务器提取响应,并为已完成的作业获取响应。
这不是一个完美的解决方案,因为客户端正在执行许多操作,并且需要知道什么时候停止(在所有作业完成之后),但是它很容易实现,并且降低了网络的依赖性(因为不需要保持与服务器的开放连接)。
发布于 2018-03-27 06:49:29
我下面的两个教程,也许他们也会帮助你。所讨论的弹簧模块是Spring反应堆 https://projectreactor.io/。
https://dzone.com/articles/spring-boot-server-sent-events-tutorial
https://stackoverflow.com/questions/49505803
复制相似问题