websocket - 带有 Hasura 或 Vanilla Websocket 的 GraphQL 订阅,用于实时文本编辑
问题描述
我正在尝试构建一个具有实时文本编辑功能的应用程序,并被困在如何以最佳方式进行架构。目前,我正在使用带有 apollo 和 hasura 的 graphql 来获取用户个人资料信息以及文档元数据和内容。
为了保存内容,我们目前只是对整个文档的 graphql 突变进行去抖动。这里的缺点是用户可以在不写回文档内容的情况下导航离开。因此,我想转向基于 websockets 的方法。
对于涉及实时文本编辑的应用程序,在每个笔划上我们都会发送增量更新,我应该尝试
- 使用带有自定义解析器的 graphql 订阅,因为我已经在使用 apollo 和 hasura,或者
- 为每个文档使用一个普通的、单独的 websocket 并完全避免使用 graphql?
在这两种情况下,我们不会直接写回 postgres,而是在 websocket 连接处于活动状态时使用 redis 缓存,然后在连接关闭时将缓存内容持久化回 postgres。前一种方法将利用已经拥有 apollo 客户端,并通过 hasura 进行身份验证;而后一种方法将避免通过 graphql 发送二进制 blob(增量更新),但需要更多设置。
解决方案
推荐阅读
- c++ - 使用 QFile::write 的正确方法?
- sql - Oracle SQL - ORA-00904: "IPA"."CHECK_ID": 无效标识符
- php - 在php中对数据进行排序。只有变量可以通过引用传递
- http - 是否可以将 HTTP POST req 的标头和正文转换为 JSON 并重复到上游
- python - 使用 python 在 MacOSX 上使用 ChromeDriver 时显示错误
- java - 创建帐户时出现条带连接错误
- php - 可变值错误,Laravel,Blade
- odoo - 发票行“price_by_pricelist”中的字段
- jhipster - JHipster Registry v3.3.0 上的微服务状态已关闭
- android - 领域迁移错误“已添加属性‘x’”