Implementar a API Co-Doing

A API Co-Doing é usada para sincronizar dados arbitrários entre os participantes da reunião. Podem ser quaisquer dados de que seu app dependa.

Você precisa serializar os dados para um Uint8Array para que eles sejam transmitidos. Para mais informações, consulte a biblioteca padrão JavaScript como referência.

Se você não tiver certeza de como serializar os dados, confira os exemplos de código seguindo.

Este guia explica como implementar a API Co-Doing.

Primeiros passos

Para usar a API Co-Doing, primeiro você deve implantar um Complemento do Meet. Uma vez você concluir essas etapas, poderá começar a usar a API Co-Doing no novo complemento.

Para usar a API Co-Doing, comece com uma objeto AddonSession, que serve como ponto de entrada para atividades colaborativas no Google Meet:

TypeScript

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

Substitua CLOUD_PROJECT_NUMBER pelo número do projeto de seu projeto do Google Cloud.

Criar um cliente de atividades colaborativas

Para começar, crie um CoDoingClient do AddonSession.

Para criar um CoDoingClient, chame o método createCoDoingClient() e forneça um objeto CoDoingDelegate.

O CoDoingDelegate é como a API Co-Doing atualiza o app sempre que há um novo estado disponível. Espera-se que, quando o método onCoDoingStateChanged() for chamado, o app aplique imediatamente o novo estado.

O exemplo de código abaixo mostra como usar a API Co-Doing:

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
    },
  });

Substitua ACTIVITY_TITLE pelo título da sua atividade.

Gerenciar o estado atual

Quando os usuários realizam uma ação no app, é esperado que ele chame imediatamente o método broadcastStateUpdate().

O exemplo de código a seguir mostra uma implementação da Método 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) });
});

Substitua SOME_STRING pelo estado atual do app.