项目

合作提供者事件是什么?

协作提供者的事件允许您对各种状态和变化做出响应,比如成功连接或身份验证更新。根据应用需求,您可以在初始化时附加事件监听器,或者之后再添加。

主要事件及其用途

事件 描述
open 当 WebSocket 连接建立时触发。
connect 提供者成功连接到服务器时触发。
authenticated 指示客户端成功身份验证。
authenticationFailed 当客户端身份验证失败时触发。
status 反映连接状态的变化。
message 捕获传入的消息。
outgoingMessage 在发送消息之前信号。
synced 标记 Y.js 文档的初始成功同步。
close 当 WebSocket 连接关闭时触发。
disconnect 提供者断开连接时发生。
destroy 表示提供者即将销毁。
awarenessUpdate 跟踪用户意识信息的更新。
awarenessChange 表示意识状态的变化。
stateless 接收无状态消息时触发。

配置事件监听器

为了立即跟踪事件,您可以在提供者的构造函数中直接传递事件监听器。这种方法保证了从一开始就启用监听器。

const provider = new TiptapCollabProvider({
  appId: "", // 用于云环境,请在本地部署时替换为baseUrl
  name: "example-document", // 文档标识符
  token: "", // 您的身份验证JWT令牌
  document: ydoc,
  onOpen() {
    console.log("WebSocket连接打开.");
  },
  onConnect() {
    console.log("已连接到服务器.");
  },
  // 请参阅以下所有事件监听器...
});

动态事件绑定

对于需要初始化后添加或移除监听器的情况,提供者支持动态绑定和解绑事件处理程序。

绑定事件监听器

const provider = new TiptapCollabProvider({
  // ...
});

provider.on("synced", () => {
  console.log("文档已同步.");
});

解绑事件监听器

const onMessage = () => {
  console.log("收到新消息.");
};

// 绑定
provider.on("message", onMessage);

// 解绑
provider.off("message", onMessage);

事件处理的用例

实时连接状态

使用 onConnectonDisconnect 事件来实时向用户提供连接状态反馈,提升用户体验。

provider.on("connect", () => {
  showStatus("已连接");
});

provider.on("disconnect", () => {
  showStatus("已断开连接");
});

文档同步状态

synced事件可用于在文档首次完全同步时通知用户,确保他们开始使用最新版本。

provider.on("synced", () => {
  alert("文档初始化完成");
});

处理身份验证问题

使用 authenticationFailed 事件捕获身份验证错误并提示用户重新认证,保持安全访问。

provider.on("authenticationFailed", ({ reason }) => {
  console.error("身份验证失败:", reason);
  requestUserReauthentication();
});
在本文档中