Cómo implementar la API de Co-Doing

La API de Co-Doing se usa para sincronizar datos arbitrarios entre los participantes de la reunión. Pueden ser los datos de los que depende tu app.

Debes serializar los datos en un Uint8Array para que se transmitan. Para obtener más información, consulta la referencia de la biblioteca estándar de JavaScript.

Si no sabes cómo serializar tus datos, revisa los siguientes ejemplos de código.

En esta guía, se explica cómo implementar la API de Co-Doing.

Comenzar

Para usar la API de Co-Doing, primero debes implementar un complemento de Meet. Una vez que hayas completado esos pasos, puedes comenzar a usar la API de Co-Doing desde tu nuevo complemento.

Para usar la API de Co-Doing, primero debes obtener un objeto AddonSession, que sirve como punto de entrada para las actividades colaborativas de Google Meet:

TypeScript

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

Reemplaza CLOUD_PROJECT_NUMBER por el número de tu proyecto de Google Cloud.

Crea un cliente de co-doing

Para comenzar, crea un objeto CoDoingClient a partir de tu AddonSession.

Para crear un CoDoingClient, llama al método createCoDoingClient() y proporciona un objeto CoDoingDelegate.

El CoDoingDelegate es la forma en que la API de Co-Doing actualiza tu app cada vez que tiene un nuevo estado disponible. Se espera que, cuando se llame al método onCoDoingStateChanged(), tu app aplique de inmediato el nuevo estado.

En el siguiente ejemplo de código, se muestra cómo usar la API de 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
    },
  });

Reemplaza ACTIVITY_TITLE por el título de tu actividad.

Administra el estado actual

Cuando los usuarios realizan acciones en tu app, se espera que esta llame de inmediato al método broadcastStateUpdate().

En el siguiente ejemplo de código, se muestra una implementación del 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) });
});

Reemplaza SOME_STRING por el estado actual de la app.