2013-05-08 21 views
13

Ich habe eine einfache offline html5/javascript Single-HTML-Datei-Web-Anwendung, die ich in meiner Dropbox speichern. Es ist eine Art Zeiterfassungstool, das ich geschrieben habe, und es speichert die Anwendungsdaten im lokalen Speicher. Da ich es für mich nutze, mag ich den Komfort einer Offline-App.Gibt es eine Möglichkeit, html5 localstorage zwischen Computern automatisch zu synchronisieren

Aber ich habe mehrere Computer, und ich habe versucht, jede Art von Hacky Weg zu finden, um die Daten dieser App (die derzeit lokalen Speicher verwendet) zwischen meinen verschiedenen Maschinen zu synchronisieren.

Es scheint, dass Chrome die Synchronisierung von Daten ermöglicht, jedoch nur für Chrome-Erweiterungen. Ich dachte auch, ich könnte vielleicht die Webseite automatisch speichern/laden ihre Daten aus einer Datei in einem Dropbox-Ordner, aber es scheint nicht eine Möglichkeit zu sein, mit einer bestimmten Datei ohne Benutzerführung automatisch zu synchronisieren.

Ich nehme an, die "offensichtliche" Lösung besteht darin, die Seite auf einen Server zu legen und die Daten in einer Datenbank zu speichern. Aber angenommen, ich möchte keine Lösung, die erfordert, dass ich Apps auf einem Server verwalte - gibt es einen anderen Weg, aber hacky, um Synchronisation zusammen zu basteln?

Ich habe sogar nach einer Weile gesucht, um zu sehen, ob es einen Anbieter gibt, der einen Web-Datenbank-Dienst anbietet - wo ich, sagen wir, einen Blob von json on-demand schreiben und dann meine Offline-App irgendwie mit diesem Dienst synchronisieren kann , aber die Politik desselben Ursprungs scheint diesen Plan ungültig zu machen (und außerdem konnte ich keinen solchen Dienst finden).

Gibt es eine knifflige/hinterhältige Lösung für dieses Problem mit Chrome, Google Drive oder Dropbox oder einem anderen Tool, das mir nicht bekannt ist? Oder muss ich meinen eigenen Server einrichten?

+0

Ich habe nicht versucht, aber es kann möglich sein, eine Datendatei aus dem lokalen Dateisystem mit Ajax zu lesen, wenn Sie Chrome starten mit dem '--allow-file-access-from -Files' Flagge. Außerdem wäre dies nicht 100% offline, aber es lohnt sich, es auszuprobieren: https://www.dropbox.com/developers/chooser – bfavaretto

Antwort

3

Offenbar habe ich genau das gleiche Problem und invoitiedated es gründlich. Die beste Wahl wäre remoteStorage, wenn Sie es schaffen könnten, es zum Laufen zu bringen. Es ermöglicht die Verwendung von Drittanbieterservern für die Datenspeicherung oder die Ausführung einer eigenen Instanz.

5

Ich habe an einem Projekt gearbeitet, das Ihnen versionierte localStorage mit Unterstützung für die Konfliktlösung gibt, wenn die gleiche Ressource von zwei verschiedenen Clients bearbeitet wird. An diesem Punkt gibt es keine Treiber für Server oder Client (sie sind derzeit async im Speicher für Testzwecke), aber es gibt eine Menge Code und Abstraktion, um das Schreiben eigener Treiber zu machen wirklich einfach ... Ich war sogar Ich denke daran, einen dropbox/google docs Treiber selbst zu machen, außer dass ich zuerst DynamoDB/MongoDB und Lawnchair machen möchte.

Der Code ist nicht abhängig von jQuery oder anderen Bibliotheken und es gibt eine ziemlich volle Funktionen (obwohl hässlich) Demo für sie als auch.

Wie auch immer die URL https://github.com/forbesmyester/SyncIt