【问题标题】:How can I discard pending DocumentReference writes when offline?离线时如何丢弃待处理的 DocumentReference 写入?
【发布时间】:2019-01-22 12:28:35
【问题描述】:

我正在使用 Firebase Firestore 文档在地图上发布我的用户的位置,以便他们看到彼此。当他们都具有良好的连接性时,这工作正常,但有时他们的手机无法连接到 Firebase 服务器,并且似乎写入被缓存:每当他们恢复连接性时,所有待处理的位置写入都会批量发送。

对其他用户的影响是他们看到一个人的位置停下来,一段时间后他们开始非常快速地移动,直到地图位置捕捉到真正的价值。这很烦人,而且浪费带宽。

我已尝试禁用持久性缓存,但这无济于事(只有当传输器应用程序死亡时才会有帮助,但只要它存在,位置就会缓存在内存中)。

也许问题是我不应该为此目的使用文档,并且还有另一种 Firebase 机制允许丢弃陈旧的写入数据以进行实时通信?

【问题讨论】:

    标签: java android firebase google-cloud-firestore


    【解决方案1】:

    设备离线时执行的所有写入操作都会排队,直到重新建立与 Firebase 服务器的连接。不幸的是,没有 API 可以帮助您控制哪些写入操作排队,哪些不排队。

    我能想到的最简单的解决方案是使用Firestore transactions,目前没有持久化到磁盘,因此在应用离线时会丢失。

    因此,交易不支持离线使用,无法缓存或保存以供日后使用。这是因为事务绝对需要与服务器进行往返通信,以确保事务中的代码成功完成。因此,您只能在在线时使用交易,因为交易取决于网络。

    【讨论】:

    • 仍然没有 API 可以判断哪些写入操作在排队?
    • @RamiAlloush 不,还没有。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-04
    • 2017-09-23
    • 2017-01-25
    相关资源
    最近更新 更多