项目

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
在本文档中