关于 spacetimedb-clients
介绍 SpacetimeDB 各语言 SDK 共通概念和客户端流程的技能,帮助开发者处理连接、订阅、本地缓存、生成的绑定及 reducer 调用。
主要功能
- 01客户端连接生命周期
- 02绑定生成与命名指南
- 03订阅与缓存行为
- 04reducer 调用指南
- 05跨 SDK 实现参考
适用场景
- 01构建 SpacetimeDB 客户端
- 02排查订阅缓存为空的问题
- 03选择和管理订阅
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ danmossa/ spacetimedb-skills --skill spacetimedb-clients安装后在 Claude Code 中输入/spacetimedb-clients确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/clients-api.mdclients-codegen.mdclients-connection.mdclients-subscriptions-semantics.mdclients-subscriptions.mdclients.md详细介绍
将此技能用于跨语言共享的 SDK 概念。
客户端核心流程
- 根据当前模块生成绑定,而不是使用过时的已检入示例。
- 使用主机 URI、数据库名称或标识、可选的身份验证令牌以及连接回调构建
DbConnection。 - 根据 SDK 启动或推进连接。某些 SDK 只有在连接推进后才会处理回调。
- 在依赖行、reducer 或订阅回调之前,先注册这些回调。
- 订阅表或查询;订阅应用后,订阅到的行会出现在本地缓存中。
- 通过生成的表句柄从本地缓存读取数据。
- 通过生成的 reducer 句柄调用 reducer;通过 SDK 特定事件或事件表观察 reducer 的执行结果。
跨 SDK 规则
- 订阅句柄管理生命周期,不管理行数据。行保存在连接的本地缓存中。
subscribeToAllTables使用起来很方便,但难以取消或优化。生产客户端应优先使用特定的类型化查询。- 先订阅,再从缓存读取。缓存为空通常意味着订阅尚未应用,而不是数据库中没有行。
- 取消订阅是异步的;在服务器确认取消订阅之前,行可能仍会保留。
- 普通客户端会生成公开表和公开 reducer/过程。仅对可信工具使用
--include-private。 - 生成的名称遵循模块架构。存在本地绑定时,不要猜测访问器名称。
- 连接表的订阅需要在连接列上建立索引;重叠订阅可能会重复执行操作,并使缓存行为更复杂。
参考索引
指引
- 编写具体的 SDK 代码时,加载特定语言的客户端技能。
- 除非所选 SDK 参考另有说明,否则先订阅,再从本地缓存读取。
- reducer 调用模式应与生成的绑定名称和 SpacetimeDB 版本保持一致。
评论
支持 Markdown