离线优先协作实时网络应用

时间:2019-01-03 20:39:13

标签: reactjs architecture backend offline

我目前手头有一个Electron ReactJS应用程序,该应用程序使用CouchDB作为其同步和实时更新的后端。我的任务是将该应用程序的后端“移植”到现有的Web服务器。目标是使用现有的权限管理和业务逻辑实现。同时,目的是重构数据结构,因为数据本质上是高度相关的。就是说,就我个人而言,我会将应用程序保留在CouchDB上,因为它可以完全满足主要的“脱机优先和实时”要求,并仅添加缺少的身份验证和权限层,但是管理层却希望这样做。

该端口将使用现有的Web服务器(运行带有Scala的Play Framework)和关系数据库(MySQL)。我一直在网上寻找一个好的现有解决方案。我想到的“简单”解决方案听起来很乏味,就像我在重新发明轮子一样。我的想法是创建一个API,并在其之上还通过Web套接字向与更改相关的用户发送实时更新。对于客户端上的状态管理,我将使用Redux + Redux Offline。尽管这可行,但这将需要在后端服务器上进行大量手动CRUD接线,并在客户端上进行相应的请求和更改。

我看过AWS AppSync,Meteor.js和Apollo。 AWS AppSync听起来完全像我可以使用的东西,但是它依赖于数据库可访问的数据库,由于我的数据库实例位于内部,因此这不是一个选择。在Apollo中,客户端听起来像是我可以选择的一个选项,然后在后端使用Sangria。我想我也可以放弃Redux的想法,并使用Apollo的“本地状态”,尽管由于我不熟悉它,因此需要更多的思考。

所有后面的解决方案都涉及GraphQL。尽管这仍然需要在后端进行大量工作,但是前端和后端之间的通信本身将更易于处理。

就我而言,必须使用现有后端服务器的情况下,对于离线优先协作实时应用程序是否还有其他更优雅的解决方案?我想念什么吗?

0 个答案:

没有答案