与Node dav客户端实现增量CardDAV同步

时间:2017-09-25 22:43:34

标签: node.js webdav carddav

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

我知道CardDAV仅支持自上次通过sync-token同步后的同步变化,当我浏览dav客户端的源和readme时,我看到一些同步令牌的引用。但是,我对DAV很新,所以我不是百分百确定如何将它们放在一起。

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

1 个答案:

答案 0 :(得分:1)

Building a CardDAV client是一个很好的资源,它描述了所有有效的方法,包括WebDAV Sync,这正是您所寻找的。

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

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

  

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

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

希望有所帮助: - )