WebSqlSyncという一般的な同期ソリューションを開発しました。
どのフレームワークにも依存しません。ここから入手できます:
https://github.com/orbitaloop/WebSqlSync
README ファイルの抜粋:
WebSqlSync
ローカル WebSql データベース (ナビゲーターの SQLite) をサーバーに自動的に同期します。(双方向同期: クライアント <-> サーバー)
既存のアプリへの統合が非常に簡単で、非常に使いやすい (2 つの関数を呼び出す: initSync と syncNow)
使用法
初期化する
ライブラリを初期化する必要があります(たとえば、起動ごとに)。
2 つのテーブルが自動的に作成されます (まだ存在しない場合、1 つはすべての新しい要素または変更された要素を格納するため (テーブル new_elem)、もう 1 つは最後の同期の日付を格納するため (テーブル sync_info) です。また、SQLite トリガーも作成します。同期するテーブルの INSERT または UPDATE を監視するため (変更された要素を new_elem テーブルに自動的に挿入するため):
DBSYNC.initSync(TABLES_TO_SYNC, webSqlDb, sync_info, 'http://www.myserver.com', callBackEndInit);
TABLES_TO_SYNC は、サーバーと同期するテーブルのリストです。例:
TABLES_TO_SYNC = [
{tableName : 'table1', idName : 'the_id'},
{tableName : 'table2'} //if idName not specified, it will assume that it's "id"
];
同期する
同期を開始するには、syncNow 関数を呼び出す必要があります。X 秒ごとに、またはいくつかの変更後に呼び出すことができます。
DBSYNC.syncNow(callBackSyncProgress, function(result) {
if (result.syncOK === true) {
//Synchronized successfully
}
});
クライアントで行う必要があるのはこれだけです。サーバー側では、独自のソリューションをコーディングする必要があります (ただし、複雑ではありません)。また、PHP と Java にはいくつかの例があります。繰り返しますが、貢献は大歓迎です。