mcpField
S
spacetimedb-clients

spacetimedb-clients

github.com/danmossa开发2167 次安装19 周前更新
代码仓库

关于 spacetimedb-clients

介绍 SpacetimeDB 各语言 SDK 共通概念和客户端流程的技能,帮助开发者处理连接、订阅、本地缓存、生成的绑定及 reducer 调用。

主要功能

  1. 01客户端连接生命周期
  2. 02绑定生成与命名指南
  3. 03订阅与缓存行为
  4. 04reducer 调用指南
  5. 05跨 SDK 实现参考

适用场景

  1. 01构建 SpacetimeDB 客户端
  2. 02排查订阅缓存为空的问题
  3. 03选择和管理订阅

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/danmossa/spacetimedb-skills --skill spacetimedb-clients

安装后在 Claude Code 中输入/spacetimedb-clients确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
clients-api.md
clients-codegen.md
clients-connection.md
clients-subscriptions-semantics.md
clients-subscriptions.md
clients.md

详细介绍

将此技能用于跨语言共享的 SDK 概念。

客户端核心流程

  1. 根据当前模块生成绑定,而不是使用过时的已检入示例。
  2. 使用主机 URI、数据库名称或标识、可选的身份验证令牌以及连接回调构建 DbConnection。
  3. 根据 SDK 启动或推进连接。某些 SDK 只有在连接推进后才会处理回调。
  4. 在依赖行、reducer 或订阅回调之前,先注册这些回调。
  5. 订阅表或查询;订阅应用后,订阅到的行会出现在本地缓存中。
  6. 通过生成的表句柄从本地缓存读取数据。
  7. 通过生成的 reducer 句柄调用 reducer;通过 SDK 特定事件或事件表观察 reducer 的执行结果。

跨 SDK 规则

  • 订阅句柄管理生命周期,不管理行数据。行保存在连接的本地缓存中。
  • subscribeToAllTables 使用起来很方便,但难以取消或优化。生产客户端应优先使用特定的类型化查询。
  • 先订阅,再从缓存读取。缓存为空通常意味着订阅尚未应用,而不是数据库中没有行。
  • 取消订阅是异步的;在服务器确认取消订阅之前,行可能仍会保留。
  • 普通客户端会生成公开表和公开 reducer/过程。仅对可信工具使用 --include-private。
  • 生成的名称遵循模块架构。存在本地绑定时,不要猜测访问器名称。
  • 连接表的订阅需要在连接列上建立索引;重叠订阅可能会重复执行操作,并使缓存行为更复杂。

参考索引

需求打开
SDK 概览和语言选择references/clients.md
通用 API 概念references/clients-api.md
代码生成references/clients-codegen.md
连接生命周期references/clients-connection.md
订阅及其语义references/clients-subscriptions.md, references/clients-subscriptions-semantics.md

指引

  • 编写具体的 SDK 代码时,加载特定语言的客户端技能。
  • 除非所选 SDK 参考另有说明,否则先订阅,再从本地缓存读取。
  • reducer 调用模式应与生成的绑定名称和 SpacetimeDB 版本保持一致。

评论

支持 Markdown