如何解决使用 Hasura 或 Vanilla Websocket 订阅 GraphQL 以进行实时文本编辑
我正在尝试构建一个具有实时文本编辑功能的应用程序,但我一直在思考如何最好地在架构上进行。目前,我正在使用带有 apollo 和 hasura 的 graphql 来获取用户个人资料信息以及文档元数据和内容。
为了保存内容,我们目前只是对整个文档的 graphql 突变进行去抖动。这里的缺点是用户可以在不回写文档内容的情况下导航离开。因此,我想转向一种基于 websockets 的方法。
对于涉及实时文本编辑的应用程序,我们在每个笔画中发送增量更新,我应该尝试
- 使用 graphql subscriptions with a custom resolver,因为我已经在使用 apollo 和 hasura,或者
- 对每个文档使用 vanilla、单独的 websocket 并避免完全使用 graphql?
在这两种情况下,我们都不会直接写回 postgres,而是在 websocket 连接处于活动状态时使用 redis 缓存,然后在连接关闭时将缓存内容保留回 postgres。前一种方法将利用已经拥有 apollo 客户端的优势,并通过 hasura 进行身份验证;而后一种方法将避免通过 graphql 发送二进制 blob(增量更新),但需要更多设置。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。