订阅:应用在后台运行时如何保持一致?

时间:2019-06-28 13:44:12

标签: graphql apollo apollo-client apollo-server graphql-subscriptions

我正在使用GraphQL查询后端,并使用其订阅使前端知道现有查询对象的更新,而且还知道是否有其他用户/设备将新对象插入后端。

它运作良好,但是在应用程序进入后台模式后我不知道如何继续。因为应用程序将松开其订阅的Websocket连接。因此,如果我的用户在10分钟后回来,我有两种解决方案:

  • 第一个是丑陋的,前端在进入后台之前已经查询了一些对象,因此在进入前台时,我尝试向后端查询一次新时间以查看它们是否具有更新,同时查询以查看是否有新对象可用。 --->我不想实现这一点,根本没有效率

  • 第二,如果我的后端由于刚断开连接而无法将订阅事件推送到前端,则将它们存储在该特定用户/设备的堆栈中,当该事件通过订阅生效时,我在短时间内将所有内容发送给他。

关于第二个,我想象每个设备的堆栈都将到期。这样,如果用户设备在X天内没有回来,我只需清理他的堆栈即可。然后,如果用户在到期后又回来了,他就知道其本地存储已不同步,并且前端会清理其自己的本地存储并进行初始化请求(GraphQL查询)以获取最小状态。

您对此有何看法?您是否有一些有关此的文章?我可能错过了更好的解决方案,但找不到社区认可的知名模式。

非常感谢您,

0 个答案:

没有答案
相关问题