Firestore用户连接状态维护:代码部署位置及缓存更新疑问
解答Firestore/Realtime Database Presence相关的代码位置疑问
针对你提出的两个疑问,我整理了清晰的解答:
1. Realtime Database Presence代码的编写位置
Realtime Database里的Presence核心逻辑主要写在应用端。比如官方示例里的onDisconnect()方法,必须在客户端执行——因为它依赖客户端的连接状态来触发离线时的操作(比如标记用户为离线)。
不过如果有后续的业务扩展需求,比如用户离线时要通知其他用户、更新全局在线统计数据,这部分可以放到Cloud Functions里:客户端通过onDisconnect()写入离线状态到Realtime Database的特定节点,然后Cloud Functions监听这个节点的变化事件,执行对应的业务逻辑。
2. Firestore本地缓存更新代码的编写位置
更新Firestore本地缓存的代码只能写在应用端。原因很简单:Firestore的本地缓存是和客户端SDK实例绑定的,只有客户端能直接操作它。
- 常规写入(
set()/update()/add()):只要客户端开启了离线模式(默认是开启的),SDK会自动同步更新本地缓存,不需要额外写代码。 - 手动强制更新:如果需要主动从服务器拉取最新数据并更新缓存,可以在应用端调用
get({ source: 'server' })方法,这样会覆盖本地缓存里的旧数据。
注意:如果是通过Cloud Functions写入Firestore,客户端的本地缓存不会自动同步,需要客户端主动监听数据变化或者重新发起查询来更新缓存。
内容的提问来源于stack exchange,提问作者Sonali Kale
相关产品推荐
相关产品推荐

