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
对象。
CoDoingDelegate
是 Co-Doing API 的运作方式
每当有新状态可用时都会更新您的应用。调用 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 替换为应用的当前状态。