Google drive api 正在同步驱动器实时文档的文件名
我的实时文档允许用户在编辑器中编辑文件名(很像谷歌自己的应用程序)。我将其表示为协作字符串,以便所有协作者尽快看到文件重命名 我正在努力确定一种最佳、最有效的方法,使这个协作字符串与实际文件名保持同步。有两种情况需要考虑: 编辑器中的更改 如果用户在编辑器中编辑文档名称。在这种情况下,我们需要使用驱动器API将更改推送到GoogleDrive上的文件中。为了避免竞争条件,最好只有一个合作者将更改推出。最简单的方法似乎是检查重命名事件是否是本地的 我还发现最好添加一个延迟,这样我们就不会在每次字符更改时都将重命名推到驱动器API上。如果几秒钟过去了,在这一点上没有更多的名称更改,它会将更改推出。这一切似乎都很有效 外部变化 更难的是,当文件名被外部更改时,我希望得到建议。例如,如果用户重命名了驱动器接口本身内的文件。我们希望此更改更新我们的协作字符串以匹配 我的应用程序完全是客户端的,所以我不能使用webhook推送通知。因此,我唯一的解决方案是每X秒轮询一次文件名(当前设置为10)。但这带来了以下问题:Google drive api 正在同步驱动器实时文档的文件名,google-drive-api,google-drive-realtime-api,Google Drive Api,Google Drive Realtime Api,我的实时文档允许用户在编辑器中编辑文件名(很像谷歌自己的应用程序)。我将其表示为协作字符串,以便所有协作者尽快看到文件重命名 我正在努力确定一种最佳、最有效的方法,使这个协作字符串与实际文件名保持同步。有两种情况需要考虑: 编辑器中的更改 如果用户在编辑器中编辑文档名称。在这种情况下,我们需要使用驱动器API将更改推送到GoogleDrive上的文件中。为了避免竞争条件,最好只有一个合作者将更改推出。最简单的方法似乎是检查重命名事件是否是本地的 我还发现最好添加一个延迟,这样我们就不会在每次字符
- 它是API密集型的。如果您有4个协作者将屏幕打开8小时,那么这就是11520个API调用。如果我的应用程序有很多用户,有很多文档,我可以看到这可能会使我超越API限制
- 为了避免竞争条件(并减少API调用),我们只希望一个协作者检查更改,并在文件名更改时更新协作字符串。但如何选择协作者何时可以随时加入/退出?目前,我让每个合作者随时检查合作者是否是“领导者”。“领导者”是会话id最高的协作者。这似乎是可行的,但这一切似乎相当骇人听闻。此外,如果合作者紧密地结合在一起,我想知道是否有可能种族条件会导致多个合作者认为他们是领导者
如果实时API只提供一个存储文档名的方法,这将是理想的。任何时候实时API检查突变,它都可以获取最新的文档名。我想您已经确定了选项。目前没有任何内置功能专门通过实时API进行同步 就我个人而言,我可能会放弃很多投票时间。。标题始终是最新的可能并不重要,因此每隔几分钟询问一次可能就足够了,这将大大降低您的qps
在识别“领导者”方面,我想不出比基于会话id的确定性更好的方法了。只要每个会话加入/离开事件都重新检查,我认为不应该有任何问题。感谢您的反馈。我每5分钟退一次。在这一点和只有一个合作者在检查这一事实之间,应该减少API调用。