问题描述
我正在编码一个客户端,该客户端通过GRPC接口与Firestore进行通信。我试图了解listen
的工作方式。在这里,您首先通过调用Firestore.listen
创建一个双向通道。然后,将其与ListenRequest
一起输入。每个ListenRequest
都有一个所谓的Target
,它代表您希望了解其更改的查询或文档列表。
为了能够处理网络连接问题,每个Target
都有一个targetId
,简称为int
。服务器将流式传输消息,以通知您在服务器端添加了带有特定Target
的{{1}},并且它还会返回所谓的targetId
。因此,下一次如果您的连接断开,则可以创建一个新的双向通道并再次添加这些resumeToken
,还可以指定Target
,以便它们可以在您之前提供正确的状态您的连接断开了。
但是我不明白他们如何处理用户拥有多个设备的情况。假设在设备A上,用户创建了一个具有targetId 1的Target,从而获得了resumeTokenA。在设备B上,用户创建了另一个Target(不同的查询)并为其分配了targetId 1,从而获得了另一个resumeTokenB。现在说设备重新连接并提供targetId 1和resumeToken A,它会使Firestore服务器感到困惑吗?因为服务器上有两个TargetId相同的Target,但它们属于两个不同的查询,Firestore服务器是否会足够聪明,知道具有resumeToken A的targetId 1属于查询A?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)