可以使用grails控制器将文本值两次呈现给客户端

时间:2015-10-27 20:36:58

标签: grails grails-controller grails-2.3 grails-2.4 grails-2.5

在我的应用程序中,浏览器http请求排队。

在对服务器的http请求中,服务器应通知客户端请求已被接受(例如,http状态为202或只是消息“正在进行中”),以便客户端队列可以将第二个请求发送到服务器。

第一个请求完全执行后,服务器应再次通知客户端请求成功(说http状态为200)。

使用promises没有帮助,因为两次渲染是不可能的;一个是实际的请求 - 响应,另一个是线程完成工作。

虽然我知道一个请求和多个响应是不可能的。但有没有办法为请求呈现文本至少两次?

1 个答案:

答案 0 :(得分:0)

一种解决方案是将其作为多步骤过程。

因此,假设我们使用Rabbit MQ作为我们的消息队列。让我们按照以下步骤操作:

  1. 队列向处理某些资源的服务器发送了一个请求。
  2. 服务器接受了请求并开始处理它并发送了一条代码为202 /的进程返回消息。此外,它确实向rabbit mq发送消息以处理请求,同时将消息代码发送给客户。

  3. 其他消息被消耗并且过程完成并且将消息200推送到具有一些标识号的成功队列以识别来自客户端的请求,例如客户ID,瓮没有。或者,而不是仅仅推送消息状态在数据库中,并使用来自客户端的另一个调用来检查消息状态是否更新为预期的状态。

  4. 客户现在可以通过检查队列或数据库轻松检查其请求的状态。

  5. 您也可以使用ajax请求来跟踪某个进程是否已完成作为服务器端。

    希望它有所帮助。