实时更新
打开一个指向 API 同一主机的 WebSocket,记录发生变化时 Fóir 会通知你的应用。每个事件都携带变化内容的 id,SDK 可以把它转换为对你查询缓存的更新。
一个套接字,同一个密钥
订阅使用 API 自身主机上的 graphql-ws 协议,使用与你的查询和 mutation 相同的 API 密钥。凭据在连接打开时发送:密钥,以及有已登录用户时该用户的访问令牌。一个套接字最多可持有 32 个实时订阅。
事件携带 id
记录事件包含操作(已创建、已更新、已发布、已取消发布或已删除)、记录的 id 和它的模型。它标明发生了什么变化,但不包含内容,所以你通过常规 API 读取该记录。每个事件还有一个序列号,按项目、按提交顺序排列。订阅时传入你已应用的最大序列号,服务器会先从其持久日志中重放你错过的内容,然后继续实时推送。
SDK 的订阅客户端
类型化 SDK 为每个模型提供一个 onChange 方法,返回一个用于取消订阅的 handle。它在第一次订阅时打开套接字,在最后一个订阅结束时关闭。如果连接断开,它会以指数退避重新连接,并重新发送实时订阅。
实时模块
@foir/sdk/live 把变更流连接到你的查询缓存,并提供 React 绑定。一次编辑只会重新获取包含该记录的查询,删除会在内存中应用,创建则以计数形式报告。你按模型选择启用。