[]
        
首页
开发者学堂
文档
论坛
市场
生态机会
活动
在线咨询 立即试用
(Showing Draft Content)

协同框架架构

📌 何时阅读本章节:这是进阶参考,并非必学内容。建议在跑通「快速开始」、按需完成「能力选配」教程后,当你需要理解 SpreadJS 协同的内部机制、排查同步异常、或微调协同行为(如撤销、冲突处理行为、工作表模式、基于数据管理器的协作等)时再阅读。如果你的目标只是实现多人协同,无需通读本章节。

SpreadJS 集成了 底层协同框架 以及扩展包 spread-sheets-collaboration 和 SpreadJS 插件 spread-sheets-collaboration-addon,支持本地同步与远程协同,实现多用户实时协同编辑。本章节介绍该框架的架构与工作机制,以及撤销、冲突处理行为、协同模式、用户与权限、协同规范等专题。

架构设计

整体流程

overview

核心组件

  • 底层协同框架:实时协同的基础框架,处理客户端与服务器之间的通信和操作同步。

  • 扩展包安装与绑定:协同服务的扩展包,为工作簿提供专用的 操作转换 (OT) 类型,包含 ReducerTransform 逻辑,确保并发编辑时的数据一致性。

  • 协同插件-快照与变更集:工作簿的插件,监听数据模型变化并生成操作 (ops),将其整合到 ChangeSets 中与服务器交互,同时将服务器推送的 ChangeSets 应用到本地数据模型。

工作机制

  • 本地同步:仅涉及 spread-sheets-collaboration-addon 插件,监控数据模型变化并在同一页面的多个工作簿实例间同步,无需服务器参与。

  • 远程协同spread-sheets-collaboration-addon 监听工作簿数据模型变化,生成对应操作并整合到 ChangeSets,通过 协同服务 框架传输至服务器。服务器利用 协同服务 的通信和处理能力,结合 spread-sheets-collaboration 中注册的 OT 类型(包含 TransformReducer 逻辑)处理操作,再将处理后的操作广播给所有连接的客户端,实现多用户实时协同。

应用场景

  • 单用户多视图:使用 spread-sheets-collaboration-addon,同一页面的多个工作簿实例可操作同一文档,适用于需要不同视图或编辑视角的场景。

  • 团队协同:配合 spread-sheets-collaboration,支持多用户实时编辑,适合团队共享和协同处理工作簿文档。

  • 权限控制:可为不同用户分配编辑或只读权限。

功能概览

实时协同

  • 多用户编辑:支持多人同时编辑同一工作簿文档,所有操作实时同步。

  • 操作转换 (OT):采用自定义 OT 类型,确保单元格更新、行插入等并发操作的一致性和正确性。

在线状态

  • 用户标识:显示其他协同者的选区和姓名首字母,便于识别协同方工作区域。

  • 自定义颜色:允许用户设置个性化颜色,提升不同协同者选区的可见性。

权限管理

  • 编辑模式:用户可直接修改文档内容。

  • 查看模式:用户仅能查看文档,无编辑权限。

本地同步

  • 多实例同步:同一页面的多个工作簿实例可实时同步更新,适用于单用户多视图场景。

冲突处理行为

  • 实时编辑状态:当冲突操作(如添加行、隐藏列)影响当前用户的编辑状态时,系统会更新编辑状态并确保用户界面(UI)正确显示。

内容导航

本章节各文档按读者关注度分组如下,可按需选读,无需通读。

快速了解

协同模式与规则

  • 协同模式 — 不同 SpreadJS 模型如何接入协同。下分两种模式:

  • 冲突处理行为 — 多人编辑时冲突操作(插入/删除行列、隐藏、排序等)的内置处理行为。

  • 协同规范 — 编写协同代码需遵循的约束(嵌套对象整体赋值、公式协同行为等)。

用户与权限

进阶参考

底层框架

上述能力均构建于 底层协同框架 之上。仅在自定义通信协议或在非 SpreadJS 场景中复用底层框架时,才需要直接阅读底层 API。