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

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

Вы должны сериализовать данные в Uint8Array , чтобы их можно было передать. Дополнительную информацию см. в справочнике по стандартной библиотеке JavaScript .

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

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

Создайте CoDoingClient

Для начала создайте CoDoingClient из AddonSession , созданного в разделе «Начало работы» .

Чтобы создать CoDoingClient , вызовите метод AddonSession.createCoDoingClient и укажите CoDoingDelegate .

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

В следующем примере кода показано, как использовать API совместного выполнения:

Машинопись

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 newState to your ongoing CoDoing activity
    },
  });

Замените ACTIVITY_TITLE названием вашего мероприятия.

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

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

В следующем примере кода показана реализация CoDoingClient.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 текущим состоянием приложения.