1

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

例如,如果我同时向旧金山、伯克利和帕洛阿尔托的餐厅发出 yelp 请求,我不应该等待所有响应都返回并能够在它们可用时进行流式传输。我该怎么做?

4

1 回答 1

1

由于浏览器在将结果传递给 javascript 之前要等到收到整个响应,所以这是不可能的。另一方面,您可以使用 websockets 来实现。

可能的架构:

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

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

于 2013-09-17T07:26:22.593 回答