协作数据
# 概述
当第一个用户连接到文档时,协作会话开始。内容会一直存储,直到至少有一个用户连接到文档。当最后一个用户断开连接时,服务器将等待 24 小时,然后删除临时协作数据。
将 CKEditor 5 和实时协作与您的应用程序集成的一个步骤是,提供将协作数据保存到某个永久存储位置的能力,并使用新内容或保存的内容初始化编辑器。有几种解决方案可以实现这一点。本指南将涵盖获取和设置协作数据的可用方案。
# 临时和永久数据
CKEditor 云服务在最后一个用户断开连接后 24 小时删除协作会话数据。 这包括用户在编辑器中创建的任何内容。为了在协作会话之间保留您的内容,您需要将其保存在您的服务器上或使用我们的 文档存储 功能。
只有在协作会话生命周期内对文档执行的操作才会被存储。操作是指在编辑会话期间进行的每次更新(文档历史记录),以 对象模型 的形式存储。
某些数据会被永久存储。这包括评论、建议、修订和用户数据。由于这一点,评论内容、时间戳、建议元数据和用户详细信息将在协作会话之间存储,用户无法修改其他用户的 数据。
在数据删除方面,文档内容会永久删除,而评论和建议仅会被标记为删除(例如,当删除评论或接受建议时)。评论 和 建议 的 REST API 还提供了两种类型的删除 - 软删除(默认删除)和永久删除(需要明确的标志)。
永久删除环境会删除与该环境关联的所有数据。
# 评论和建议
当用户添加新的评论或建议时,您在编辑器的内容中只会找到对它的引用 - 两个 HTML 元素标记建议或评论的开始和结束,并带有一个附加的 ID 属性。其余的数据(创建时间、用户名、评论内容等)在编辑器数据中不可见。对于实时协作插件,评论或建议元数据会被发送到云服务服务器,在那里它可以被安全地存储,并且只与授权用户共享。由于这种方法,用户无法修改其他用户的评论和建议。
任何在协作会话期间创建的评论或建议都会被分配到 文档 ID,它们是在哪里创建的。您无法使用不同的文档 ID 访问其数据。同样,您也无法访问在不同环境中创建的评论或建议,即使它们来自同一组织或位于同一协作服务器本地部署实例上。
如果您打开一个包含在具有不同 documentId
的协作会话中或在不同环境中创建的评论或建议的文档,可能会导致编辑器崩溃,并出现以下错误之一
track-changes-user-not-found
无法找到建议 abc
找不到评论线程 abc
接受或拒绝的建议和删除的评论仅会被标记为删除。这意味着即使在协作会话结束(最后一个用户断开连接后 24 小时)后,也可以通过 REST API 恢复它们。所有恢复的元数据也会保存在数据库中。您也可以使用 REST API 永久删除评论和建议。
# 评论存档
评论存档功能需要存储评论线程的附加数据(上下文、属性等)。可以通过评论 REST-API、文档 REST-API 或 Webhook 同步附加的评论线程属性。
从 CKEditor 5 的 v37.0.0 版本开始,评论线程数据处理略有更改。接受的评论线程现在被视为已解决并移至评论存档。因此,当评论被移至存档时,将触发一个新的名为 commentthread.resolved
的 Webhook,而不是 commentthread.removed
。
在存档中,评论线程可以是以下两种状态之一
- 重新打开 - 在这种情况下,会触发
commentthread.reopened
Webhook - 删除 - 在这种情况下,会触发旧的
commentthread.removed
Webhook
此外,还添加了 2 个新的 Webhook
commentthread.added
- 当添加评论线程时触发,可能包含已添加的评论commentthread.updated
- 当更新评论线程时触发
# Rest API
您可以使用云服务 REST API 对建议和评论进行 CRUD 操作。建议和评论 CRUD 操作的一些示例用例
- 将您现有的内容传输到云服务数据库中,
- 在环境之间移动建议或评论数据,
- 将建议或评论数据从一个文档移动到另一个文档,
- 向建议或评论添加属性。
- … 等等。
有关详细信息,请参阅 REST API 文档。
# Webhook
当指定 事件 被触发时,CKEditor 云服务会向配置的 URL 发送一个 HTTP POST 请求。
您可以使用评论和建议 Webhook 来
- 将数据从 CKEditor 云服务服务器同步到您的数据库,
- 在用户的评论被删除或得到回复时通知用户,
- 在用户的建议状态发生变化时通知用户,
- … 等等。
有关详细信息,请参阅 Webhook 文档。
# 数据安全
CKEditor 云服务永久存储的数据使用不同的密钥进行加密,该密钥对于每个环境都不同。此外,在大多数情况下,系统使用标识符而不是来自用户的原始数据。CKEditor 云服务使用加密来保护用户和服务器之间的通信,并使用 HTTPS 或 WSS 协议提供所有通信接口。
有关详细信息,请参阅 系统安全 部分。