流式传输来自多个调用的 HTTP 响应



在我的快速应用程序中,我想对 API 进行多次调用,并在收到响应时将每个响应流式传输回客户端,而不是等待所有响应。

例如,如果我同时请求对旧金山、伯克利和帕洛阿尔托的餐馆大喊大叫,我就不必等待所有回复回来,就可以在可用时流式传输它们。我该怎么做?

由于浏览器会等到收到整个响应后再将结果传递给javascript,因此这不可能直接实现。另一方面,您可以使用 websocket 来做到这一点。

可能的体系结构:

  1. 服务器:与客户端建立 websocket 连接
  2. 服务器:并行触发 4 个对 API 的请求
  3. 服务器:当数据到达每个连接时,将每个数据包传递到 websocket,内容类似于 {api: "yelp", data: ... }
  4. 客户端:继续将传入数据附加到表示每个 API 响应的字符串中。
  5. 服务器:连接完成后,发送完成消息{ api: "yepl", done: true }
  6. 客户端:收到完成消息后,您将获得来自该 API 的完整响应。

我非常怀疑这是一个好主意。它要复杂得多,您最好使用来自客户端的 4 个并行请求,或者如果可能的话,直接从浏览器查询 API。

相关内容

  • 没有找到相关文章

最新更新