【问题标题】:Angular HttpClient streamAngular HttpClient 流
【发布时间】:2019-05-19 22:26:33
【问题描述】:

我正在为 Cordova/iOS 开发一个 Angular 应用程序。我从后端服务获得了大约 100 MB 的数据,这似乎让 iOS 的网络视图 (WKWebView) 崩溃。至少我不会遇到返回较少数据的测试后端崩溃。

数据将存储在 IndexedDB 中,因此没有理由用所有这些数据填充 RAM。

所以我的想法是将响应直接流式传输到 IndexedDB。有可用的库,即使使用 JSON 也可以做到这一点,例如Oboe.jsJSONStream

Angular 的HttpClient 在一个大字符串或 JSON 对象中返回整个响应,这不是我想要的。有没有一种方法可以逐步处理类似于此的响应:https://stackoverflow.com/a/18964123/395879

【问题讨论】:

    标签: ajax angular xmlhttprequest angular-httpclient


    【解决方案1】:

    在 Angular 中,目前还没有流式传输数据的方式。

    您可以获得的最接近的是使用websockets

    那么正确的工作流程应该是:

    1. 在应用程序的服务器端添加 websocket 功能。
    2. 创建一个 Angular 服务来管理 websocket 的连接和断开连接。
    3. 确保您的 Angular 服务公开一个可以订阅的 observable。这将提供您正在寻找的流媒体的感觉。
    4. 订阅服务提供的数据流,并在发出新值时更新您的数据/视图。

    【讨论】:

    • 不会自己实现 XHR 逻辑而不是使用 websockets 吗? XHR 支持流式传输。 Angular 的 HttpClient 抽象可能不会。
    • 如果您感觉更舒服,您可以实现 XHR 逻辑。我不会直接反对它。我建议阅读此stackoverflow.com/questions/14703627/… 您可以按照以下链接以角度实现服务器发送的事件:medium.com/@chrisbautistaaa/… 最后,您需要做适当和实用的事情。对我来说,这将是 websockets,但这也是 xhr 流或服务器发送的事件都是可行的..
    猜你喜欢
    • 1970-01-01
    • 2019-05-06
    • 1970-01-01
    • 2019-01-07
    • 1970-01-01
    • 1970-01-01
    • 2012-11-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多