项目

Tiptap 合作编辑是什么?

Tiptap 合作编辑将标准文本编辑器转变为协作平台,让用户能够像使用 Google Docs 或 Notion 一样实时协同编辑。它基于开源的 Hocuspocus WebSocket 后端构建,通过 WebSocket 技术实现实时和异步更新,并利用 Y.js 确保更改的一致同步。

Tiptap 合作编辑注重性能和可扩展性,每天被数十万用户测试。它在 Hocuspocus 强大基础上增添了更多性能、可扩展性和安全性功能。

它整合了评论、文档版本历史和安全验证等功能,适用于云服务和个人服务器。

核心特性

  • 实时和离线更改合并,无冲突。
  • 兼容多种编辑器:Tiptap、Slate、Quill、Monaco、ProseMirror。
  • 支持复用一个 WebSocket 连接处理多个文档。
  • 集成 webhook 通知更改。
  • 使用 Redis 高效应对高用户量。
  • 采用 TypeScript 编写,保证类型安全和可扩展性。

Tiptap 合作编辑作为基础技术,提供了高级功能,如 webhook 事件、文档版本控制、后端文档操作、评论等。

文档存储位置

如果您使用我们的本地解决方案,可以选择在自己的基础设施中存储文档。但对于使用协作云服务的用户,我们与赫兹纳(Hetzner)合作,提供可靠的云基础设施,确保在高峰期和协作活动期间也能保持稳定且高效的性能。

您的文档存储位置取决于您的订阅计划:

  • 入门版:文档存储在欧洲符合 GDPR 的数据中心,保护您的数据隐私和安全。
  • 商业版:您可以选择美国东岸或西岸的数据中心,或者欧洲,根据您的喜好。
  • 企业版:在您首选的位置选择专用云存储,或选择自行管理的本地存储。

无论哪种计划,您都可以使用文档管理 API 自行创建文档及其相关信息的备份。

关于 Y.js

Y.js 是一个库,它能让多个用户实时无冲突地合并更改。在冲突解决的复制数据类型(CRDT)中,Y.js 以其高性能著称,相比类似技术具有显著效率优势。

作为 CRDT,Y.js 确保更改顺序不会影响文档最终状态,类似于 Git 中的提交。这保证了在不同环境中的所有数据副本始终一致。

这项技术支持开发高度响应的实时应用,实现现有软件的协作功能,管理同步状态,并支持离线优先的场景,重新连接时轻松集成数据。

Y.js 文档兼容性

Y.js 使用特殊的 Y.doc 二进制格式以提高效率,但您无需担心 Tiptap 编辑器中的文档创建方式。您可以继续使用常见的 JSON 或 HTML 格式,协作服务器会负责转换它们供 Y.js 使用。

得益于 Y.js 的二进制格式,它能快速处理数据并保持同步。如果需要二进制格式,您可以通过文档管理 API 获取 Y.doc。不过,您也可以选择更熟悉的 JSON 或 HTML 格式获取文档。虽然直接的标记输出不提供,但可以通过从 HTML 转换来实现,提供处理文档格式的灵活性。

从 Hocuspocus 或协作云迁移

将应用程序从 Hocuspocus 迁移到本地解决方案或 Tiptap 合作云,只需简单地将 HocuspocusProvider 更改为 TiptapCollabProvider,反之亦然,无需对您的设置进行其他更改。

API 的交互方式也不会改变,TiptapCollabProvider 负责管理应用程序与服务器的连接和登录细节。

这种迁移方法同样适用于从协作云迁移到本地配置的情况。

数据模式管理

Tiptap 对数据模式有严格的要求,会忽略未定义在当前活跃模式中的元素。这可能导致同时使用不同版本模式的客户端编辑同一文档时出现问题。

例如,假设在一次更新中添加了任务列表功能。使用旧模式的用户将看不到这些任务列表,而新模式下添加的任务将因为模式不匹配而从他们的视图中消失。

为了解决这些问题,可以考虑以下策略:

  1. 在部署时要求客户端更新到新的模式。
  2. 监控模式版本,限制使用过时版本的客户端编辑权限。
在本文档中