需要在不同时间返回多个值的耗时计算

时间:2017-11-12 21:59:26

标签: java spring angular spring-boot websocket

我有这个控制器来处理需要大量计算的请求。计算需要时间并在计算期间的不同时间产生多个值,一旦计算出值,我需要将其发送到我的前端。我知道春天的控制器只返回一次。

当我在spring-boot后端收到请求时,是否有可能设置类似于spring和我的角度前端之间的流/通道的东西。然后,当我正在进行计算时,不断地向前端流式传输,而不是必须立即返回所有内容?

我一直在关注websockets,但它并没有被视为解决方案,因为我必须在前端进行计算时将事情发送到前端。

1 个答案:

答案 0 :(得分:0)

实现此目的的一种方法是在线程或其他后端任务中启动操作,并立即将ID返回给标识任务的客户端。然后,客户端可以定期调用以获取任务的状态以及任何更新的信息。每个电话都可以立即返回,或者#34;挂起"直到下一条数据可用,减少拨打电话和延迟。

另一种方法是HTML5服务器发送的事件,这些事件是为这种类型的操作而制作的,但我还没有使用它们。你可以在这里阅读https://www.html5rocks.com/en/tutorials/eventsource/basics/

  

SSE背后的想法可能很熟悉:一个网络应用程序"订阅"到服务器生成的更新流,并且每当发生新事件时,都会向客户端发送通知。