1

在 Web 应用程序中,用户能够执行一些我需要异步发送到服务器的任务。基本上,这真的很容易,但现在我希望它在离线模式下也能正常工作。

我的想法是使用客户端队列,如果网络连接可用,则将元素从该队列传输到服务器。

我可以使用PouchDB,但我不需要客户端的所有任务,所以我不想要一个完整的客户端数据库,其中包含服务器所拥有的所有元素。我只需要某种队列:将其放入其中,然后尝试将其发送到服务器:如果有效,则退出队列,否则在短暂暂停后重试。

我怎么能实现这个?是否有诸如 RabbitMQ(概念上!)之类的东西可用于浏览器?浏览器内置数据库之上的队列?类似的东西?

或者这个问题可以使用 PouchDB 解决吗?

4

1 回答 1

0

PouchDB 确实支持单向复制(只是做clientDb.replicate.to("http://server/")),所以如果您已经在您的服务器上运行 CouchDB,它可能是实现任务队列类型系统的一种快速简便的方法。

您可能希望在复制中使用过滤器,因为当您从客户端数据库“出列”或删除任务时,您可能不想将该删除复制到服务器:) 这个答案特定于 CouchDB,但它也应该在 PouchDB 中工作,因为我认为 PouchDB 确实支持过滤复制:CouchDB 复制而不删除文档

也就是说,像这样使用 PouchDB 似乎有点尴尬,而且完整的复制系统可能比简单的任务排队所需的开销要多一些。取决于您的应用程序的需求是什么,以及您正在排队的任务的确切性质!它可以像您push执行任务的阵列一样简单,并定期检查其中是否有任务,您可以popshift离开阵列并发送到服务器。

还有async.queue,它通常在 node.js 中使用,但也可以在浏览器中使用(此队列不受任何类型的存储支持,但您可以使用 PouchDB 或其他客户端数据库添加持久存储)。

于 2014-01-13T22:57:20.513 回答