2017-09-25 4 views
0

Ich versuche, ein einfaches node.js-Programm zu schreiben, um einige Adressbücher von einem CardDAV-Server mit einer lokalen MySQL-Datenbank zu synchronisieren. Ich benutze den Knoten dav Client.Inkrementelle CardDAV-Synchronisierung mit Node dav-Client

Ich weiß, CardDAV unterstützt nur die Synchronisierung seit der letzten Synchronisierung über sync-token und ich sehe einige Verweise auf Sync-Token, wenn ich durch die Quelle und readme des Dav-Clients durchsuchen. Aber ich bin neu bei DAV, also bin ich mir nicht 100% ig sicher, wie ich alles zusammenstellen soll.

Ich vermute, dass ich das Sync-Token (und Level?) Speichern muss, sendet der Server zurück, nachdem ich eine Synchronisierung ausgeführt habe, und schließe sie dann in meine nächste Synchronisierungsanforderung ein. Bin ich auf dem richtigen Weg?

Antwort

1

Building a CardDAV client ist eine großartige Ressource, die beschreibt, wie alles funktioniert, einschließlich WebDAV Sync, was Sie suchen.

Beachten Sie, dass ein Server nicht erforderlich ist, um WebDAV-Synchronisierung bereitzustellen (und nicht viele). Beachten Sie auch, dass selbst wenn sie die WebDAV-Synchronisierung unterstützen, sie die Token jedoch jederzeit ablaufen lassen können (z. B. wenn einige nur ein einzelnes Token oder nur für eine begrenzte Zeit speichern).

Kurz gesagt: verlassen Sie sich nicht auf WebDAV-sync. Wenn es nicht verfügbar ist oder das Token abgelaufen ist, müssen Sie auf eine vollständige, regelmäßige Synchronisierung zurückgreifen (Vergleichen von hrefs und etags).

Ich vermute, dass ich das Sync-Token (und Level?) Speichern muss, sendet der Server zurück, nachdem ich eine Synchronisierung ausgeführt habe, und schließe sie dann in meine nächste Synchronisierungsanforderung ein. Bin ich auf dem richtigen Weg?

Ja, Sie sind auf dem richtigen Weg. Sync-Tokens sind normalerweise pro Sammlung (Tiefe: 1, ich denke, sie können Tiefe: unendlich sein, aber ich bin mir nicht sicher). Sie müssen es also neben der URL der Sammlung speichern, die Sie synchronisieren. Dann betten Sie es in der nächsten Sync-Anfrage in den Sync-Report ein. Wenn das Token noch gültig ist, erhalten Sie die neuen/gelöschten/geänderten Datensätze zurück. Wenn das Token ungültig wurde, müssen Sie eine vollständige Synchronisierung durchführen.

Hoffe das hilft :-)

+0

Danke für die hilfreiche Antwort. Ich bin schon einmal auf diesen Artikel zum Aufbau eines CardDAV-Clients gestoßen und es war definitiv hilfreich. Es ist die am besten lesbare Dokumentation dieser Konzepte, die ich gefunden habe. –