在我的快速应用程序中,我想对 API 进行多次调用,并在收到响应时将每个响应流式传输回客户端,而不是等待所有响应。
例如,如果我同时请求对旧金山、伯克利和帕洛阿尔托的餐馆大喊大叫,我就不必等待所有回复回来,就可以在可用时流式传输它们。我该怎么做?
由于浏览器会等到收到整个响应后再将结果传递给javascript,因此这不可能直接实现。另一方面,您可以使用 websocket 来做到这一点。
可能的体系结构:
- 服务器:与客户端建立 websocket 连接
- 服务器:并行触发 4 个对 API 的请求
-
服务器:当数据到达每个连接时,将每个数据包传递到 websocket,内容类似于
{api: "yelp", data: ... }
- 客户端:继续将传入数据附加到表示每个 API 响应的字符串中。
-
服务器:连接完成后,发送完成消息
{ api: "yepl", done: true }
- 客户端:收到完成消息后,您将获得来自该 API 的完整响应。
我非常怀疑这是一个好主意。它要复杂得多,您最好使用来自客户端的 4 个并行请求,或者如果可能的话,直接从浏览器查询 API。