用途:该技能用于搭建 ElectricProvider,通过 Electric shapes 实现 Yjs 实时协同编辑。它基于 electric-shapes,使用前需先了解 ShapeStream 配置。
主要能力:
- 配置 ElectricProvider,处理 documentUpdates 与 awarenessUpdates 两类 shape。
- 通过 resume state 支持高效重连:提供 stableStateVector 时,重连仅发送存储向量与当前文档状态的差异,否则每次重连会拉取整个文档 shape。
- 提供连接生命周期事件,如 status(connecting/connected/disconnected)与 sync,并支持手动 connect/disconnect。
使用方式(要点):
- 在 Postgres 创建 ydoc_update 与 ydoc_awareness 表,并用触发器回收过期 awareness 条目。
- 服务端提供接收二进制 Yjs update 的接口(如 PUT /api/yjs/update)。
- 客户端创建 Y.Doc,通过 LocalStorageResumeStateProvider 加载并订阅 resume state,构造 ElectricProvider 时传入 doc、documentUpdates(含 shape、sendUrl、getUpdateFromRow)、awarenessUpdates、resumeState、debounceMs。
- shape 流需使用 parseToDecoder 解析 BYTEA,否则 Y.applyUpdate 会静默失败或损坏文档。
- awareness shape 可设置 offset: 'now',只获取实时 awareness,不做历史回填。
- 代理需暴露 Electric 相关响应头(electric-offset、electric-handle、electric-schema、electric-cursor)。
适用场景:需要多用户实时协同编辑且后端使用 Postgres 与 Electric 的应用。
限制与注意:resume state 未持久化会导致每次重连拉取整个文档;缺少 parseToDecoder 会破坏文档;debounceMs 默认为 0,协同编辑应设为 100 以上以减少请求。资料未提供收费、价格、平台等信息。目标版本为 @electric-sql/y-electric v0.1.x。