0

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

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

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

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

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

4

1 回答 1

0

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

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

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

  3. 另一条消息被消费并完成处理,并推送消息 200 说成功队列,并带有一些标识号以识别来自客户端的请求,例如客户 ID、urn 号。等等。或者与其推送只是将消息状态放入数据库并使用来自客户端的另一个调用来检查消息状态是否更新为预期的状态。

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

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

希望能帮助到你。

于 2015-10-28T06:25:41.993 回答