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:- Llama a
base44.actors.ActorName(sessionId)para seleccionar la sesión. - Llama a
.connect()para abrir la conexión WebSocket. - Llama a
conn.subscribe()para registrar un listener para los mensajes del actor. - Llama a
conn.send()para enviar un mensaje al actor.
chatRoom, escucha los mensajes y envía un mensaje:
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:- Define
tickIntervalMscon la duración del intervalo en milisegundos. - Implementa
shouldTick()para que devuelvatruepara seguir con los ticks yfalsepara detenerlos. - En
handleTick(), ejecuta el trabajo de cada intervalo.
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:- Llama a
schedule()con una clave y una hora para programar el despertar. - En
handleWake(), comprueba la clave y ejecuta el trabajo de ese despertar. - Cuando el despertar ya no sea necesario, llama a
cancelSchedule()con la clave.
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:- En
handleConnect(), compruebaconn.identityy llama aconn.reject()para rechazar a un cliente. - Llama a
conn.send()para responder solo a ese cliente. - En
handleMessage(), llama abroadcast()para llegar a todos los clientes conectados. Para identificar al remitente, incluye campos deconnen el mensaje.
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:- En
handleStart(), carga los valores dethis.storageen los campos de clase. - Después de cada cambio, llama a
this.storage.put()para guardar el valor actualizado. - Para reiniciar la sesión, llama a
this.storage.delete()othis.storage.deleteAll().
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:- Valida el mensaje entrante antes de escribir.
- Lee el ID de usuario de
conn.identity.userId. - Usa
this.client.asServiceRolepara obtener acceso elevado. Escribe con una clave estable, como el ID de sesión, para que un manejador repetido actualice el mismo registro.
Llamar a una función de backend para trabajo con secretos
Los actores pueden leer los secretos de la app consecrets.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:
- Crea una función de backend que lea el secreto con
secrets.get(), haga el trabajo y devuelva el resultado. - En un manejador, llama a
this.client.functions.invoke()con el nombre de la función y los datos que quieres enviar. - Usa el resultado en tu sesión, por ejemplo, difundiéndolo a los clientes conectados.
Ver también
- Resumen de actores: Conceptos y terminología
- Crear un actor: Archivos del actor y una clase mínima
- Archivos y código de actores: API completa de la clase de backend
actors deploy: Despliega los actores locales
Esta página fue traducida con IA. Para obtener la información más precisa y actualizada, consulta la versión en inglés.