实现 Co-Doing API

Co-Doing API 用于在会议参与者之间同步任意数据。这可以是应用依赖的任何数据。

您必须将数据序列化为 Uint8Array 才能传输。如需了解详情,请参阅 JavaScript 标准库参考文档

如果您不确定如何序列化数据,请查看以下代码示例。

本指南介绍了如何实现 Co-Doing API。

开始使用

如需使用 Co-Doing API,您必须先部署 Meet 插件。完成这些步骤后,您就可以开始在新插件中使用 Co-Doing API 了。

如需使用 Co-Doing API,请先获取 AddonSession 对象,该对象可用作 Google Meet 协作活动的入口点:

TypeScript

const session = await window.meet.addon.createAddonSession({
    cloudProjectNumber: "CLOUD_PROJECT_NUMBER",
});

CLOUD_PROJECT_NUMBER 替换为您的 Google Cloud 项目的项目编号。

创建协同处理客户端

首先,基于 AddonSession 创建 CoDoingClient 对象。

如需创建 CoDoingClient,请调用 createCoDoingClient() 方法并提供 CoDoingDelegate 对象。

每当有新状态可用时,Co-Doing API 都会通过 CoDoingDelegate 更新您的应用。调用 onCoDoingStateChanged() 方法时,应用应立即应用新状态。

以下代码示例展示了如何使用 Co-Doing API:

TypeScript

interface MyState {
  someString: string;
  someNumber: number;
}

/**
 * Serialize/deserialize using JSON.stringify
 * You can use any method you want; this is included for as an example
 */
function toBytes(state: MyState): Uint8Array {
  return new TextEncoder().encode(JSON.stringify(state));
}

function fromBytes(bytes: Uint8Array): MyState {
  return JSON.parse(new TextDecoder().decode(bytes)) as MyState;
}

  const coDoingClient = await addonSession.createCoDoingClient({
    activityTitle: "ACTIVITY_TITLE",
    onCoDoingStateChanged(coDoingState: CoDoingState) {
      const newState = fromBytes(coDoingState.bytes);
      // This function should apply the new state to your ongoing CoDoing activity
    },
  });

ACTIVITY_TITLE 替换为 activity 的标题。

管理当前状态

当用户在您的应用中执行操作时,您的应用应立即调用 broadcastStateUpdate() 方法。

以下代码示例展示了 broadcastStateUpdate() 方法的实现:

TypeScript

const myState: MyState = {
  someString: "SOME_STRING",
  someNumber: 0
};

document.getElementById('some-button').onClick(() => {
  myState.someNumber = myState.someNumber + 1;
  coDoingClient.broadcastStateUpdate({ bytes: toBytes(myState) });
});

SOME_STRING 替换为应用的当前状态。