使用 Node dav 客户端实现增量 CardDAV 同步
Achieving incremental CardDAV sync with Node dav client
我正在尝试编写一个简单的 node.js 程序来将一些地址簿从 CardDAV 服务器同步到本地 MySQL 数据库。我正在使用节点 dav 客户端。
我知道 CardDAV 仅支持自上次通过 sync-token
同步以来的同步更改,当我浏览 dav 客户端的源和 readme 时,我看到了一些对同步令牌的引用。但是,我对 DAV 很陌生,所以我不是 100% 确定如何将它们组合在一起。
我猜我需要存储服务器在我 运行 同步后发回的同步令牌(和级别?),然后将其包含在我的下一个同步请求中。我在正确的轨道上吗?
Building a CardDAV client is a great resource which describes how all that works, including WebDAV Sync,就是你要找的。
请注意,不需要服务器来提供 WebDAV 同步(而且很多服务器不需要)。
另请注意,即使他们支持 WebDAV 同步,他们也可以使他们想要的令牌过期 however/whenever(例如,有些只存储单个令牌,或仅存储有限的时间)。
简而言之:不要依赖 WebDAV 同步。如果它不可用,或者令牌已过期,您需要回退到完整的定期同步(比较 href 和 etag)。
I'm guessing I need to store the sync token (and level?) the server sends back after I run a sync and then include that in my next sync request. Am I on the right track?
是的,您走在正确的轨道上。同步令牌通常是每个集合(深度:1,我认为它们可以是 Depth:infinity,但我不确定)。
因此,您需要将其与正在同步的集合的 URL 一起存储。
然后在下一个同步请求中,将其嵌入到同步报告中。如果令牌仍然有效,您将取回 new/deleted/changed 记录。如果令牌已失效,您需要执行完全同步。
希望对您有所帮助:-)
我正在尝试编写一个简单的 node.js 程序来将一些地址簿从 CardDAV 服务器同步到本地 MySQL 数据库。我正在使用节点 dav 客户端。
我知道 CardDAV 仅支持自上次通过 sync-token
同步以来的同步更改,当我浏览 dav 客户端的源和 readme 时,我看到了一些对同步令牌的引用。但是,我对 DAV 很陌生,所以我不是 100% 确定如何将它们组合在一起。
我猜我需要存储服务器在我 运行 同步后发回的同步令牌(和级别?),然后将其包含在我的下一个同步请求中。我在正确的轨道上吗?
Building a CardDAV client is a great resource which describes how all that works, including WebDAV Sync,就是你要找的。
请注意,不需要服务器来提供 WebDAV 同步(而且很多服务器不需要)。 另请注意,即使他们支持 WebDAV 同步,他们也可以使他们想要的令牌过期 however/whenever(例如,有些只存储单个令牌,或仅存储有限的时间)。
简而言之:不要依赖 WebDAV 同步。如果它不可用,或者令牌已过期,您需要回退到完整的定期同步(比较 href 和 etag)。
I'm guessing I need to store the sync token (and level?) the server sends back after I run a sync and then include that in my next sync request. Am I on the right track?
是的,您走在正确的轨道上。同步令牌通常是每个集合(深度:1,我认为它们可以是 Depth:infinity,但我不确定)。 因此,您需要将其与正在同步的集合的 URL 一起存储。 然后在下一个同步请求中,将其嵌入到同步报告中。如果令牌仍然有效,您将取回 new/deleted/changed 记录。如果令牌已失效,您需要执行完全同步。
希望对您有所帮助:-)