0

我正在尝试编写一个简单的 node.js 程序来将一些通讯簿从 CardDAV 服务器同步到本地 MySQL 数据库。我正在使用节点dav客户端。

我知道 CardDAV 仅支持自上次同步以来的同步更改 via sync-token,当我浏览dav 客户端的源代码和自述文件时,我看到了一些对同步令牌的引用。但是,我对 DAV 很陌生,所以我不能 100% 确定如何将它们组合在一起。

我猜我需要存储同步令牌(和级别?)服务器在我运行同步后发回,然后将其包含在我的下一个同步请求中。我在正确的轨道上吗?

4

1 回答 1

1

构建 CardDAV 客户端是一个很好的资源,它描述了所有工作原理,包括您正在寻找的WebDAV Sync 。

请注意,服务器不需要提供 WebDAV 同步(而且很多都不需要)。另请注意,即使它们支持 WebDAV 同步,它们也可以随时/随心所欲地使令牌过期(例如,有些只存储单个令牌,或仅在有限的时间内)。

简而言之:不要依赖 WebDAV 同步。如果它不可用,或者令牌已过期,则需要回退到完整的常规同步(比较 href 和 etag)。

我猜我需要存储同步令牌(和级别?)服务器在我运行同步后发回,然后将其包含在我的下一个同步请求中。我在正确的轨道上吗?

是的,你在正确的轨道上。同步令牌通常是每个集合(深度:1,我认为它们可以是深度:无穷大,但我不确定)。因此,您需要将其与您正在同步的集合的 URL 一起存储。然后在下一个同步请求中,将其嵌入到同步报告中。如果令牌仍然有效,您将取回新的/删除的/更改的记录。如果令牌无效,您需要执行完全同步。

希望有帮助:-)

于 2017-09-26T10:21:57.057 回答