Внедрение API совместного выполнения

API Co-Doing используется для синхронизации произвольных данных между участниками встречи. Это могут быть любые данные, от которых зависит ваше приложение.

Для передачи данных необходимо сериализовать их в массив Uint8Array . Подробнее см. в справочнике по стандартной библиотеке JavaScript .

Если вы не уверены, как сериализовать данные, ознакомьтесь с приведенными ниже примерами кода.

В этом руководстве объясняется, как реализовать API Co-Doing.

Начать

Чтобы использовать API Co-Doing, необходимо сначала развернуть дополнение Meet . После этого вы сможете начать использовать API Co-Doing из нового дополнения.

Чтобы использовать API Co-Doing, начните с получения объекта AddonSession , который служит точкой входа для совместных действий Google Meet:

Машинопись

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

Замените CLOUD_PROJECT_NUMBER на номер вашего проекта Google Cloud.

Создайте клиента для совместного выполнения

Для начала создайте объект CoDoingClient из вашего AddonSession .

Чтобы создать CoDoingClient , вызовите метод createCoDoingClient() и предоставьте объект CoDoingDelegate .

CoDoingDelegate — это метод, с помощью которого API Co-Doing обновляет ваше приложение при появлении нового доступного состояния. Ожидается, что при вызове метода onCoDoingStateChanged() ваше приложение немедленно применяет новое состояние.

В следующем примере кода показано, как использовать API Co-Doing:

Машинопись

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 на название вашей деятельности.

Управление текущим состоянием

Когда пользователи выполняют действия в вашем приложении, ожидается, что ваше приложение немедленно вызовет метод broadcastStateUpdate() .

В следующем примере кода показана реализация метода broadcastStateUpdate() :

Машинопись

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 текущим состоянием приложения.

,

API Co-Doing используется для синхронизации произвольных данных между участниками встречи. Это могут быть любые данные, от которых зависит ваше приложение.

Для передачи данных необходимо сериализовать их в массив Uint8Array . Подробнее см. в справочнике по стандартной библиотеке JavaScript .

Если вы не уверены, как сериализовать данные, ознакомьтесь с приведенными ниже примерами кода.

В этом руководстве объясняется, как реализовать API Co-Doing.

Начать

Чтобы использовать API Co-Doing, необходимо сначала развернуть дополнение Meet . После этого вы сможете начать использовать API Co-Doing из нового дополнения.

Чтобы использовать API Co-Doing, начните с получения объекта AddonSession , который служит точкой входа для совместных действий Google Meet:

Машинопись

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

Замените CLOUD_PROJECT_NUMBER на номер вашего проекта Google Cloud.

Создайте клиента для совместного выполнения

Для начала создайте объект CoDoingClient из вашего AddonSession .

Чтобы создать CoDoingClient , вызовите метод createCoDoingClient() и предоставьте объект CoDoingDelegate .

CoDoingDelegate — это метод, с помощью которого API Co-Doing обновляет ваше приложение при появлении нового доступного состояния. Ожидается, что при вызове метода onCoDoingStateChanged() ваше приложение немедленно применяет новое состояние.

В следующем примере кода показано, как использовать API Co-Doing:

Машинопись

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 на название вашей деятельности.

Управление текущим состоянием

Когда пользователи выполняют действия в вашем приложении, ожидается, что ваше приложение немедленно вызовет метод broadcastStateUpdate() .

В следующем примере кода показана реализация метода broadcastStateUpdate() :

Машинопись

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 текущим состоянием приложения.