Connettere un client a una sessione
Quando il frontend deve unirsi a una sessione live, ricevere messaggi dall’actor e inviare messaggi all’actor, connetti un client a una sessione dell’actor. Per connettere un client a una sessione:- Chiama
base44.actors.ActorName(sessionId)per selezionare la sessione. - Chiama
.connect()per aprire la connessione WebSocket. - Chiama
conn.subscribe()per registrare un listener per i messaggi dell’actor. - Chiama
conn.send()per inviare un messaggio all’actor.
chatRoom, ascolta i messaggi e invia un messaggio:
Eseguire i tick
Quando un’operazione deve ripetersi a intervalli mentre i client sono nella sessione, esegui i tick. Ad esempio, per trasmettere lo stato del gioco o aggiornare il timer di un round. Per eseguire i tick:- Imposta
tickIntervalMssulla durata dell’intervallo in millisecondi. - Implementa
shouldTick()in modo che restituiscatrueper continuare i tick efalseper fermarli. - In
handleTick(), esegui l’operazione per ogni intervallo.
Pianificare i wake
Quando un’operazione deve essere eseguita una volta in un momento specifico, sia che la sessione sia attiva sia che sia inattiva, pianifica un wake. Ad esempio, per terminare un turno dopo 30 secondi o chiudere una lobby vuota. Per pianificare un wake:- Chiama
schedule()con una chiave e un orario per impostare il wake. - In
handleWake(), controlla la chiave ed esegui l’operazione per quel wake. - Quando il wake non serve più, chiama
cancelSchedule()con la chiave.
Gestire le connessioni dei client
Quando devi decidere chi può unirsi a una sessione, rispondere a un client specifico e raggiungere tutti i client della sessione, gestisci le connessioni dei client. Per gestire le connessioni dei client:- In
handleConnect(), controllaconn.identitye chiamaconn.reject()per rifiutare un client. - Chiama
conn.send()per rispondere solo a quel client. - In
handleMessage(), chiamabroadcast()per raggiungere tutti i client connessi. Per identificare il mittente, includi nel messaggio campi diconn.
Rendere persistenti i dati di sessione
Quando dei valori devono sopravvivere a un periodo di inattività, rendi persistenti i dati di sessione. Ad esempio, una plancia, un elenco della cronologia o il turno attuale. Per rendere persistenti i dati di sessione:- In
handleStart(), carica i valori dathis.storagenei campi della classe. - Dopo ogni modifica, chiama
this.storage.put()per salvare il valore aggiornato. - Per reimpostare la sessione, chiama
this.storage.delete()othis.storage.deleteAll().
Scrivere dati delle entità da una sessione
Quando la sessione deve creare o aggiornare record dell’app, scrivi dati delle entità. Ad esempio, un punteggio finale o un ordine completato. Per scrivere dati delle entità da una sessione:- Valida il messaggio in arrivo prima di scrivere.
- Leggi l’ID utente da
conn.identity.userId. - Usa
this.client.asServiceRoleper un accesso elevato. Scrivi con una chiave stabile, come l’ID di sessione, così un handler ripetuto aggiorna lo stesso record.
Chiamare una funzione backend per operazioni con secret
Gli actor possono leggere i secret dell’app consecrets.get(). Quando un handler deve eseguire un’operazione che usa un secret, come chiamare un’API esterna con una chiave API, ti consigliamo di chiamare una funzione backend. La funzione legge il secret e restituisce il risultato, mai il secret.
Per chiamare una funzione backend da un actor:
- Crea una funzione backend che legge il secret con
secrets.get(), esegue l’operazione e restituisce il risultato. - In un handler, chiama
this.client.functions.invoke()con il nome della funzione e i dati da inviare. - Usa il risultato nella tua sessione, ad esempio trasmettendolo ai client connessi.
Vedi anche
- Panoramica degli actor: Concetti e terminologia
- Creare un actor: File degli actor e una classe minima
- File e codice degli actor: API completa della classe di backend
actors deploy: Distribuisci gli actor locali
Questa pagina è stata tradotta con l’AI. Per le informazioni più accurate e aggiornate, consulta la versione inglese.