Node.js 与服务器同步数据的Web应用程序

Node.js 与服务器同步数据的Web应用程序,node.js,web-applications,offline-caching,simperium,derbyjs,Node.js,Web Applications,Offline Caching,Simperium,Derbyjs,有没有一种简单的方法可以使用web应用程序管理脱机数据,并在连接时与服务器同步?我一直在看流星,CouchDB和类似的,但仍然不确定什么是最不痛苦的方式 当然,我可以自己用套接字或类似的东西来实现它,但是如果已经有了这样的东西,我看不出有什么理由再这样做 我计划使用Node作为服务器 谢谢你说的是两件事;1) 离线时如何存储/持久化数据(存储机制),以及2)在线时如何与服务器同步(通信机制)。1的答案是某种本地存储,根据您的平台,有几种方法(本地存储、websql、文件系统API等)。2的答案实

有没有一种简单的方法可以使用web应用程序管理脱机数据,并在连接时与服务器同步?我一直在看流星,CouchDB和类似的,但仍然不确定什么是最不痛苦的方式

当然,我可以自己用套接字或类似的东西来实现它,但是如果已经有了这样的东西,我看不出有什么理由再这样做

我计划使用Node作为服务器


谢谢

你说的是两件事;1) 离线时如何存储/持久化数据(存储机制),以及2)在线时如何与服务器同步(通信机制)。1的答案是某种本地存储,根据您的平台,有几种方法(本地存储、websql、文件系统API等)。2的答案实际上取决于您的同步需求有多迫切,但一般来说,您可以将HTTP本身与定期(长)轮询、websockets和类似功能结合使用

除了存储和通信机制之外,还有许多使工作更简单的库,如Meteor(通信)和CouchDB(存储),但也有许多库。甚至还有一些库负责实际的同步机制(还有可能的冲突解决),但这在很大程度上取决于您的实际应用程序

更新:这个框架看起来很有希望,但我自己还没有测试过:


您可能也想看看云服务。如果您正在开发一个新的应用程序,它们会将您推向一个无服务器的模式,这是最好的,当然,您必须乐于使用服务

()是一个有趣的云服务-我今天能找到的唯一一个进行同步的云服务(不同于Firebase和Spire.io,它们在其他方面相似),对于iOS,它包括离线存储,而对于JavaScript客户端,您需要使用HTML5功能自行覆盖本地存储。js似乎对此有一些支持,Simperium可以使用类似的API风格与主干集成

对于非云服务,()是一个开源项目,其中包括Racer,一个数据同步库(在前面的回答中提到)——这两个都在快速开发中,尚未完成,但如果您的时间尺度允许,看起来很有趣,并且不需要云服务。有一个很有用的方法——尽管它是由Derbyjs开发人员编写的,但它没有太大的偏见


我还研究了CouchDB,它有一些有趣的内置复制功能,但我不喜欢它使用在查询需要时(或通过批处理)延迟更新的索引,而且我不喜欢将服务器DB直接公开给客户端以启用复制/同步。一般来说,我认为最好将客户端本地存储与服务器端数据库分离,当然,对于web应用程序来说,在客户端使用CouchDB是很困难的。

我知道有很多方法可以进行本地存储,以及如何发送和接收数据。我想问的是,是否已经做了任何东西,可以在一个包中解决所有这些问题。我正在认真考虑流星,但由于它是如此的beta,我想知道是否有类似的东西在那里。任何我可以“保存”到客户机上的数据库中,并简单地从所有其他内容中提取的内容。在这里搜索“html5脱机同步”会找到很多关于技术的答案,但很少涉及现成的解决方案。很可能“简单”和“解决所有用例”是相互排斥的,所以这完全取决于您的用例是什么(单向同步、双向同步、一对一、一对多、多对多)。谢谢您的帮助。我做了一些测试,《流星》显然完全符合我的要求。离线时,该应用程序会继续正常工作,只是将服务器视为非常慢。当它恢复连接时,它会同步所有数据。有一个名为now.js的模块是为类似目的而设计的,但该项目现在已经被放弃(尽管它可能非常有用)。