首页 > 解决方案 > 带有 Hasura 或 Vanilla Websocket 的 GraphQL 订阅,用于实时文本编辑

问题描述

我正在尝试构建一个具有实时文本编辑功能的应用程序,并被困在如何以最佳方式进行架构。目前,我正在使用带有 apollo 和 hasura 的 graphql 来获取用户个人资料信息以及文档元数据和内容。

为了保存内容,我们目前只是对整个文档的 graphql 突变进行去抖动。这里的缺点是用户可以在不写回文档内容的情况下导航离开。因此,我想转向基于 websockets 的方法。

对于涉及实时文本编辑的应用程序,在每个笔划上我们都会发送增量更新,我应该尝试

在这两种情况下,我们不会直接写回 postgres,而是在 websocket 连接处于活动状态时使用 redis 缓存,然后在连接关闭时将缓存内容持久化回 postgres。前一种方法将利用已经拥有 apollo 客户端,并通过 hasura 进行身份验证;而后一种方法将避免通过 graphql 发送二进制 blob(增量更新),但需要更多设置。

标签: websocketgraphqlapollohasura

解决方案


推荐阅读