Skip to main content
Estás viendo la documentación para desarrolladores
Esta documentación es para desarrolladores que trabajan con la plataforma para desarrolladores de Base44.
Usa estos flujos de ejemplo como punto de partida para tu implementación.

Conectar un cliente a una sesión

Cuando el frontend necesita unirse a una sesión en vivo, recibir mensajes del actor y enviarle mensajes, conecta un cliente a una sesión de actor. Para conectar un cliente a una sesión:
  1. Llama a base44.actors.ActorName(sessionId) para seleccionar la sesión.
  2. Llama a .connect() para abrir la conexión WebSocket.
  3. Llama a conn.subscribe() para registrar un listener para los mensajes del actor.
  4. Llama a conn.send() para enviar un mensaje al actor.
El siguiente ejemplo se conecta a una sesión del actor chatRoom, escucha los mensajes y envía un mensaje:
Para más información sobre las conexiones, consulta conexiones.

Ejecutar ticks

Cuando un trabajo debe repetirse en un intervalo mientras hay clientes en la sesión, ejecuta ticks. Por ejemplo, para difundir el estado de un juego o actualizar un temporizador de ronda. Para ejecutar ticks:
  1. Define tickIntervalMs con la duración del intervalo en milisegundos.
  2. Implementa shouldTick() para que devuelva true para seguir con los ticks y false para detenerlos.
  3. En handleTick(), ejecuta el trabajo de cada intervalo.
El siguiente ejemplo ejecuta un tick cada segundo mientras hay al menos dos clientes en la sesión, y difunde una cuenta atrás en cada tick:
Para más información sobre los ticks, consulta manejadores y configuración de temporizadores.

Programar despertares

Cuando un trabajo debe ejecutarse una vez a una hora concreta, tanto si la sesión está activa como inactiva, programa un despertar. Por ejemplo, para terminar un turno después de 30 segundos o cerrar una sala de espera vacía. Para programar un despertar:
  1. Llama a schedule() con una clave y una hora para programar el despertar.
  2. En handleWake(), comprueba la clave y ejecuta el trabajo de ese despertar.
  3. Cuando el despertar ya no sea necesario, llama a cancelSchedule() con la clave.
El siguiente ejemplo programa un tiempo límite de turno cuando empieza un turno y difunde un mensaje cuando se activa el tiempo límite:
Para más información sobre los despertares, consulta manejadores y configuración de temporizadores.

Gestionar las conexiones de clientes

Cuando necesitas decidir quién puede unirse a una sesión, responder a un cliente concreto y llegar a todos los clientes de la sesión, gestiona las conexiones de clientes. Para gestionar las conexiones de clientes:
  1. En handleConnect(), comprueba conn.identity y llama a conn.reject() para rechazar a un cliente.
  2. Llama a conn.send() para responder solo a ese cliente.
  3. En handleMessage(), llama a broadcast() para llegar a todos los clientes conectados. Para identificar al remitente, incluye campos de conn en el mensaje.
El siguiente ejemplo rechaza a los clientes anónimos, envía el historial al cliente que se conecta y difunde los mensajes con el ID de usuario del remitente:
Para más información sobre las conexiones, consulta conexiones.

Conservar los datos de sesión

Cuando los valores deben sobrevivir a un periodo de inactividad, conserva los datos de sesión. Por ejemplo, un tablero, una lista de historial o el turno actual. Para conservar los datos de sesión:
  1. En handleStart(), carga los valores de this.storage en los campos de clase.
  2. Después de cada cambio, llama a this.storage.put() para guardar el valor actualizado.
  3. Para reiniciar la sesión, llama a this.storage.delete() o this.storage.deleteAll().
El siguiente ejemplo carga un tablero al inicio, lo guarda después de cada movimiento y vacía el almacenamiento cuando se desconecta el último cliente:
Para más información sobre el almacenamiento, consulta almacenamiento.

Escribir datos de entidades desde una sesión

Cuando la sesión necesita crear o actualizar registros de la app, escribe datos de entidades. Por ejemplo, una puntuación final o un pedido completado. Para escribir datos de entidades desde una sesión:
  1. Valida el mensaje entrante antes de escribir.
  2. Lee el ID de usuario de conn.identity.userId.
  3. Usa this.client.asServiceRole para obtener acceso elevado. Escribe con una clave estable, como el ID de sesión, para que un manejador repetido actualice el mismo registro.
El siguiente ejemplo guarda una puntuación final para el cliente autenticado. Un guardado posterior para la misma sesión actualiza ese registro:
Para más información sobre el acceso a entidades, consulta acceso a entidades.

Llamar a una función de backend para trabajo con secretos

Los actores pueden leer los secretos de la app con secrets.get(). Cuando un manejador necesita un trabajo que usa un secreto, como llamar a una API externa con una clave de API, te recomendamos llamar a una función de backend. La función lee el secreto y devuelve el resultado, nunca el secreto. Para llamar a una función de backend desde un actor:
  1. Crea una función de backend que lea el secreto con secrets.get(), haga el trabajo y devuelva el resultado.
  2. En un manejador, llama a this.client.functions.invoke() con el nombre de la función y los datos que quieres enviar.
  3. Usa el resultado en tu sesión, por ejemplo, difundiéndolo a los clientes conectados.
El siguiente ejemplo muestra una función de backend que lee una clave de API y devuelve una traducción:
El siguiente ejemplo llama a esa función desde un actor y difunde el resultado:

Ver también

Esta página fue traducida con IA. Para obtener la información más precisa y actualizada, consulta la versión en inglés.