tiptap 什么是协作提供者
协作后端与协作提供者一起构成实时协作的核心。它们在不同用户之间建立和管理通信渠道,确保文档的更新和更改在所有参与者之间同步。
协作提供者处理实时数据交换的复杂性,包括冲突解决、网络可靠性以及用户在线状态感知。Hocuspocus 提供者是专为 Tiptap 协作设计的,它带来了适用于协作环境的高级功能,如 WebSocket 消息验证、调试模式和灵活的连接策略。
基本配置设置
首先,你需要在项目中安装提供者包:
npm install @hocuspocus/provider
基本配置涉及连接到协作后端。这需要指定文档的名称、应用 ID(对于云部署)或基础 URL(对于内部解决方案),以及 JWT 认证令牌。根据你的框架,注册一个与协作后端的回调,比如 React 中的 useEffect()
或 Vue 中的 onMounted()
。
const doc = new Y.Doc()
useEffect(() => {
const provider = new TiptapCollabProvider({
name: note.id, // 文档标识符
appId: 'YOUR_APP_ID', // 替换为来自Cloud仪表板的YOUR_APP_ID
token: 'YOUR_JWT', // 安全连接的认证令牌
document: doc,
})
配置高级提供者
Tiptap 协作的高级提供者设置提供了深度定制选项,以增强协作体验。下面是一个全面的参数列表、实用场景和关键概念,如“感知”功能的详细说明。
参数 | 描述 | 默认值 |
---|---|---|
appId | 协作云部署的应用 ID。 | '' |
baseUrl | 连接到内部服务器的 URL,用于替代 appId,适用于内部部署。 | '' |
name | 文档的名称。 | '' |
document | Y.js 文档实例;默认创建一个新的。 | new Y.Doc() |
token | 安全连接的认证令牌。字符串、函数或 Promise 均可使用。 | '' |
awareness | 管理用户在线信息,默认附着到传递的 Y.js 文档上。 | new Awareness() |
connect | 初始化后是否连接到服务器。 | true |
preserveConnection | 关闭提供者后是否保持 WebSocket 连接。 | true |
broadcast | 允许跨浏览器标签页同步。 | true |
forceSyncInterval | 强制服务器同步的间隔(毫秒)。 | false |
quiet | 消除警告输出。 | false |
WebSocketPolyfill | 在 Node.js 环境中使用的 WebSocket 实现,例如 ws。 | WebSocket |
优化重连时机
提供者的重连设置已经预设为生产环境的最佳性能,确保可靠性和效率。如果你需要针对特定场景调整这些设置,我们的延迟配置提供了灵活性。
调整初始延迟,应用指数回退,或者设置最大等待时间,以精细调整应用程序的重连行为,平衡响应性和服务器效率。
参数 | 描述 | 默认值 |
---|---|---|
delay | 重连尝试之间的基本延迟,以毫秒为单位。 | 1000 |
factor | 延迟的乘数,每次尝试后指数递增。 | 2 |
initialDelay | 第一次重连尝试前的时间,以毫秒为单位。理想情况下立即进行。 | 0 |
maxAttempts | 最大重连尝试次数。0 表示无限次。 | 0 |
jitter | 当启用 jitter 时,通过在当前尝试的延迟范围内随机选择一个值,增加重连延迟的变异性。 | true |
minDelay | jitter 启用时的最小延迟,确保随机延迟不会过短。如果 jitter 禁用,此属性无效。 | 1000 |
maxDelay | maxDelay 设置重连尝试的上限。当使用指数回退(factor)时,你可以将 maxDelay 设置为 0,移除这个上限,允许延迟无限增长。 | 30000 |
timeout | 设置等待重连尝试的超时,超过此时间就放弃,以毫秒为单位。 | 0 |
messageReconnectTimeout | 定义在等待服务器消息之前等待的时间,如果在此期间未收到消息,连接将自动关闭,单位为毫秒。 | 30000 |