我的服务器收到一大块文本,我想在收到最后一块文本之前立即在客户机上显示文本.

目前,每次我收到数据块时,我都会将其附加到我已有的字符串中,并在我的Firebase上实时设置这个较长的字符串.

大概是这样的:

complete_response = ''
for chunk in response:
   complete_response += chunk
   ref.set(complete_response)

这对我来说似乎不是超级高效,因为每次我收到块时,我都会将该块与之前所有的块连接在一起发送给客户端.

我想知道使用ush()方法是否更有效?但我不知道当我创建新 node 时,客户端是否也会重新获取所有以前的 node ,或者是否会聪明地处理这一问题.

complete_response = ''
for chunk in response:
   ref.push().set(chunk)

我的客户端是一个Flutter版本的应用程序,我正在使用StreamBuilder来监听Firebase实时数据库的更新.

推荐答案

在只追加较小的子集的情况下发送完整的字符串确实不是最有效的.

一种常见的替代方案确实是保留一个块列表,并将每个新块推到该列表的末尾.然后,读取数据的客户端将不得不读取完整的列表,并从区块中重新构建完整的字符串.

Flutter相关问答推荐

Flutter -设计具有奇怪边界的容器的方法Radius

Cupertino Buttino SheetAction on按下可触发加载指示器,然后勾选并延迟

Flutter ReorderableListView在可滚动父级中无法完美工作

Flutter -如何将导航轨道标签靠左对齐?

如何从DART中的事件列表中获取即将到来的日期

无法在仿真器上运行Flutter 项目-文件名太长错误

导航回上一页会将我带回Ffltter应用程序中的登录页面

无状态和有状态小部件,我可以同时使用吗?

在参数为空时保持命名参数的默认值

Flutter底部面板局部显示

Flutter 分析发现 Gitlab CI/CD 管道中的问题,但它在本地没有

如何修复 ICU Lexing 错误:Flutter 中的意外字符

底部工作表顶部的一块 Flutter

在 Flutter 中读取 Firebase 数据库数据时遇到问题

如何更改中心的圆形进度指示器

Flutter 构建方法使用的是旧版本的变量?

容器在发布模式下显示灰色框(抖动)

Flutter中如何连续获取TextField的文本是否为空?

type '_InternalLinkedHashMap' 不是使用 http 包的'String' 类型的子类型

如何从 Firebase Firestore 中获取具有特定字段值的文档?