我的实时文档允许用户在编辑器中编辑文件名(很像谷歌自己的应用程序)。我将此表示为一个协作字符串,以便所有协作者尽快看到该文件重命名。
我试图确定保持此协作字符串与实际文件名同步的最佳和最有效的方法。有两种情况需要考虑:
如果用户在编辑器中编辑文档名称。在这种情况下,我们需要使用Drive API将更改推送到Google驱动器上的文件。为了避免竞争条件,最好只有一个合作者推动更改。最简单的方法是检查重命名事件是否是本地的。
我还发现最好添加延迟,因此我们不会在每次更改字符时将重命名推送到Drive API。如果几秒钟后没有更多的名称更改通过,它会推动更改。这一切似乎都运作良好。
在外部更改文件名的情况下,更难以向我请求建议的人。例如,如果用户在Drive界面中重命名了该文件。我们希望此更改能够更新我们的协作字符串以匹配。
我的应用程序完全是客户端的,因此我无法使用webhook推送通知。所以我唯一的解决方案是每X秒轮询一次文件名(当前设置为10)。但这会带来以下问题:
有更简单的方法吗?我缺少一个实时API函数?
如果实时API只提供了存储文档名称的方法,那将是理想的。只要实时API检查突变,它就可以获取最新的文档名称。
答案 0 :(得分:1)
我认为您已经确定了选项。目前还没有任何内置功能可以通过Realtime API专门同步它。
就个人而言,我可能会大量退出投票时间......标题总是最新的可能并不重要,因此每隔几分钟询问可能就足够了,并且会大大降低你的qps。
在识别"领导者"方面,我无法想到比基于会话ID的确定性更好的东西。只要每次重新检查每次会议加入/离开事件,我都不认为应该有任何问题。