我开发了一个名为WebSqlSync的通用同步解决方案。
它不依赖于任何框架。它在这里可用:
https ://github.com/orbitaloop/WebSqlSync
自述文件的摘录:
WebSqlSync
自动将本地 WebSql 数据库(导航器中的 SQLite)同步到服务器。(2路同步:客户端<->服务器)
非常容易集成到您现有的应用程序中并且非常易于使用(调用 2 个函数:initSync 和 syncNow)
用法
初始化
您需要初始化库(例如在每次启动时)。
它将自动创建 2 个表(如果它们尚不存在,一个用于存储所有新的或修改的元素(表 new_elem),另一个用于存储上次同步的日期(表 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 中有一些例子。再次,欢迎贡献。