gpt4 book ai didi

angular - 如何在客户端浏览器上立即处理分块的 HTTP Post 响应 6/7

转载 作者:行者123 更新时间:2023-12-02 03:17:48 26 4
gpt4 key购买 nike

我们有 REST API 客户端\服务器服务。在特定的发布请求中,服务器应启动长时间运行的操作,而客户端应等待并接收进度通知,直到操作完成。进度通知是一个简单的 json 字符串消息,当服务器发送它时,用户应该立即看到它。

服务器在操作期间发送分块的 JSON 字符串。

当您到达时,我应该如何立即对收到的分块数据(来自发布请求)使用react?我正在使用 Angular 6,并且尝试了不同的技术,但没有成功。

我尝试将 httpClient 选项“reportProgress”设置为 true,它只是将响应拆分为不同的进度报告,但它仍然将所有服务器 block 收集到单个数组缓冲区。

我还尝试创建一个 HttpInterceptor,我得到了相同的响应“分割”,但不是实际的服务器 block 。

最佳答案

I have tried to set the httpClient option "reportProgress" to true, it just splits the response to different progress reports, but it still collects all the server chunks to single array buffer.

这是内置于底层 XHR 调用 ( https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseType ) 的。 Firefox 有一个自定义响应类型 (moz-chunked-arraybuffer),但没有标准方法来接收这样的分块响应。

浏览器支持文件下载,这些文件下载实际上不能通过 JS 访问,但可以流式传输。否则,您需要将整个内容加载到内存中。

还有一些解决方案,例如网络套接字、服务器发送事件、将调用分解为多个短暂的调用等,但这些都需要在服务器端进行更改。

同样相关:https://github.com/angular/angular/issues/26289

关于angular - 如何在客户端浏览器上立即处理分块的 HTTP Post 响应 6/7,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55616465/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com