需要 ChicagoBoss 中流响应的用例示例

Need an use case example for stream response in ChicagoBoss

ChicageBoss 控制器 API 有这个

{stream, Generator::function(), Acc0}

Stream a response to the client using HTTP chunked encoding. For each chunk, the Generator function is passed an accumulator (initally Acc0) and should return either {output, Data, Acc1} or done.

我想知道这有什么用例?还有其他类似Json,输出。这个stream什么时候有用?

有人可以在现实世界中展示一个用例吗?

提供大文件下载可能是最直接的用例。

您可能会争辩说还有其他方法可以提供文件以便用户可以下载它们,但这些方法可能还有其他缺点:

  • 通过流式传输文件,您不必在开始向客户端发送响应之前将整个文件读入内存。对于小文件,可以直接读取文件内容,return为{output, BinaryContent, CustomHeader}。但如果您想提供磁盘映像等大文件,这可能会变得棘手。
  • 人们经常建议将可下载文件作为静态文件提供(例如 here)。但是,这些下载会绕过所有控制器,如果您需要下载计数器或访问限制之类的东西,这可能会成为一个问题。缓存也可能是一个问题。