Firestore(Firebase)网络请求返回的int+int数组格式数据含义是什么?
你观察到的这种格式是Firestore底层私有有线传输协议中专门用于长轮询场景的轻量增量编码,目前没有对外公开的官方规范,属于谷歌针对实时推送场景做的内部优化设计。
格式具体含义
- 第一行的单个整数是变更序列号:用于标识推送增量的全局顺序,客户端可以通过该序号判断是否出现丢包、乱序,避免重复消费或者遗漏变更。
- 第二行的整数数组是订阅资源变更标记集合:数组的每个索引对应你此前通过短请求注册的不同订阅资源路径,对应位置的数值非0即代表该路径下有数据更新,客户端可直接根据索引读取长轮询后续分段返回的对应负载,不需要额外解析完整JSON结构。
你后续观测到的请求分工完全符合这套协议的设计逻辑:
平均耗时20ms的短请求本质是订阅心跳/确认包,作用只是向服务端上报客户端在线状态、确认已接收的最新序列号,传输负载极小所以响应速度极快,本身不会携带实际业务数据。1分钟超时的长轮询才是实际的增量数据传输通道,采用分段返回的逻辑就是为了尽可能降低传输开销,弱网场景下的传输稳定性也更高。
内容的提问来源于stack exchange,提问作者Cyril N.
相关产品推荐
相关产品推荐

