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 o app depende.

É necessário serializar os dados para um Uint8Array para que eles sejam transmitidos. Para mais informações, consulte a referência da biblioteca padrão do JavaScript.

Se você não souber como serializar seus dados, consulte os exemplos de código a seguir.

Este guia explica como implementar a API Co-Doing.

Primeiros passos

Para usar a API Co-Doing, primeiro você precisa implantar um complemento do Meet. Depois de concluir essas etapas, você poderá começar a usar a API Co-Doing no seu novo complemento.

Para usar a API Co-Doing, comece recebendo um objeto AddonSession, que serve como ponto de entrada para as atividades colaborativas do Google Meet:

TypeScript

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

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

Criar um cliente de co-doing

Para começar, crie um objeto CoDoingClient com base no AddonSession.

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

O CoDoingDelegate é como a API Co-Doing atualiza seu app sempre que um novo estado está 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 do 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.