离线/在线数据同步设计(Javascript)

gat*_*pia 54 javascript offline data-synchronization pouchdb

我目前正在使用所有html5好东西编写离线webapp以获得离线支持.但是,我现在开始考虑编写同步模块,以确保将任何脱机数据发送到服务器并将服务器数据发送回客户端.现在我确信这已经完成了,我的意思是它是一个非常经典的设计问题,影响移动设备和其他许多东西.所以我想知道有人能指出我为这种事情提供一些好的设计资源吗?

现在我真的不需要过于复杂,我的意思是我没有处理多个用户访问相同的数据,我很高兴不合并冲突(只需要采取最新的)但我仍然希望设计能够请允许我将来使用这些选项.

还有,有没有任何开源项目实现这种类型的东西?我不会扯掉其他人的代码(如果许可证允许的话),我很乐意移植.

Reb*_*cca 10

我遇到了类似的问题.我决定使用纯粹的JSON进出方法.我正在提交表单的解决方案是:

  1. 抓住表单提交事件
  2. 检查用户是否在线
  3. 如果用户在线,则以普通表格POST提交表格
  4. 如果用户离线,则将字符串化JSON请求并将其存储在本地(我决定使用Web SQL数据库).队列表只是Uri和Payload.

然后我有在线/离线事件的全局事件挂钩.当用户重新联机时,它会检查队列,如果队列中有项目,则会将其作为JSON POST请求发送.

如果您主要想获取 JSON数据并将其缓存以供离线使用,那么请查看jquery.offline.

在两个方向同步的挑战是您需要使用已排队的任何CRUD工作更新本地缓存列表.

我想找到一种更通用的方法来做到这一点.


kyb*_*kos 10

我对类似设计(尚未尝试过)的计划是使用类似PouchDB的东西在本地存储数据,然后将其与远程沙发实例同步.


fro*_*uty 6

查看Derby,一个Node MVC框架,它具有一些非常甜蜜的同步和冲突解决功能.http://derbyjs.com/

  • Derby使用[RacerJS](https://github.com/codeparty/racer)进行数据同步,因此您不需要*来使用完整的Derby框架.据他们自己说,RacerJS仍处于阿尔法. (5认同)