Hocuspocus Provider 事件

介绍

事件是响应不同状态的绝佳方式,例如当 provider 成功连接时。你可以选择在初始化时绑定事件监听器,也可以稍后绑定,这取决于你。

选项 1:配置

将事件监听器传递给构造函数,确保它们在初始化期间注册。

const provider = new HocuspocusProvider({
  url: "ws://127.0.0.1:1234",
  name: "example-document",
  document: ydoc,
  onOpen() {
    // …
  },
  onConnect() {
    // …
  },
  onAuthenticated() {
    // …
  },
  onAuthenticationFailed: ({ reason }) => {
    // …
  },
  onStatus: ({ status }) => {
    // …
  },
  onMessage: ({ event, message }) => {
    // …
  },
  onOutgoingMessage: ({ message }) => {
    // …
  },
  onSynced: ({ state }) => {
    // …
  },
  onClose: ({ event }) => {
    // `event` 有 `code` 和 `reason`(自 v4 起)
    // …
  },
  onDisconnect: ({ event }) => {
    // …
  },
  onDestroy() {
    // …
  },
  onAwarenessUpdate: ({ added, updated, removed }) => {
    // …
  },
  onAwarenessChange: ({ states }) => {
    // …
  },
  onStateless: ({ payload }) => {
    // ...
    // provider 也可以发送自定义消息到服务器: provider.sendStateless('任意字符串负载')
  }
});

选项 2:绑定

有时你想在初始化之后(即使是紧接着初始化后)注册事件监听器。这也是绑定和解绑事件监听器的好方法。

绑定事件监听器

const provider = new HocuspocusProvider({
  // …
});

provider.on("synced", () => {
  // …
});

解绑事件监听器

const onMessage = () => {
  // 收到一条新消息
};

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

// … 然后解绑。
provider.off("onMessage", onMessage);

事件列表

名称说明
open当 WebSocket 连接创建时。
connect当 provider 成功连接到服务器时。
authenticated当客户端成功认证时。
authenticationFailed当客户端认证未成功时。
status当连接状态发生变化时。
message当收到一条消息时。
outgoingMessage当即将发送一条消息时。
synced当 Y.js 文档成功同步(初始同步)时。
close当 WebSocket 连接关闭时。
disconnect当 provider 断开连接时。
destroy当 provider 将被销毁时。
awarenessUpdate当 awareness 更新时(详情见 https://docs.yjs.dev/api/about-awareness)
awarenessChange当 awareness 发生改变时(详情见 https://docs.yjs.dev/api/about-awareness)
stateless当收到无状态消息时。