【问题标题】:Achieving incremental CardDAV sync with Node dav client使用 Node dav 客户端实现增量 CardDAV 同步
【发布时间】:2017-09-26 18:21:57
【问题描述】:

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

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

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

【问题讨论】:

    标签: node.js webdav carddav


    【解决方案1】:

    Building a CardDAV client 是一个很好的资源,它描述了所有工作原理,包括您正在寻找的 WebDAV Sync

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

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

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

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

    希望有所帮助:-)

    【讨论】:

    • 感谢您的帮助。我以前看过那篇关于构建 CardDAV 客户端的文章,它肯定很有帮助。这是我找到的关于这些概念的最易读的文档。
    猜你喜欢
    • 2015-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多