实时更新

打开一个指向 API 同一主机的 WebSocket,记录发生变化时 Fóir 会通知你的应用。每个事件都携带变化内容的 id,SDK 可以把它转换为对你查询缓存的更新。

一个套接字,同一个密钥

订阅使用 API 自身主机上的 graphql-ws 协议,使用与你的查询和 mutation 相同的 API 密钥。凭据在连接打开时发送:密钥,以及有已登录用户时该用户的访问令牌。一个套接字最多可持有 32 个实时订阅。

可以订阅什么

recordChanged 报告某一个模型的记录变化。其他订阅涵盖调用方自己的通知、后台任务进度,以及单个操作的运行。监视某个模型需要与读取它相同的读取权限,对于记录对每个用户私有的模型,数据流会过滤为调用方自己的记录。

事件携带 id

记录事件包含操作(已创建、已更新、已发布、已取消发布或已删除)、记录的 id 和它的模型。它标明发生了什么变化,但不包含内容,所以你通过常规 API 读取该记录。每个事件还有一个序列号,按项目、按提交顺序排列。订阅时传入你已应用的最大序列号,服务器会先从其持久日志中重放你错过的内容,然后继续实时推送。

SDK 的订阅客户端

类型化 SDK 为每个模型提供一个 onChange 方法,返回一个用于取消订阅的 handle。它在第一次订阅时打开套接字,在最后一个订阅结束时关闭。如果连接断开,它会以指数退避重新连接,并重新发送实时订阅。

实时模块

@foir/sdk/live 把变更流连接到你的查询缓存,并提供 React 绑定。一次编辑只会重新获取包含该记录的查询,删除会在内存中应用,创建则以计数形式报告。你按模型选择启用。

了解详情

订阅指南涵盖端点、每种订阅及其事件字段,以及 live 模块。