Skip to main content
Stai visualizzando la documentazione per sviluppatori
Questa documentazione è per sviluppatori che lavorano con la piattaforma per sviluppatori di Base44.
Usa questi flussi di esempio come punto di partenza per la tua implementazione.

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:
  1. Chiama base44.actors.ActorName(sessionId) per selezionare la sessione.
  2. Chiama .connect() per aprire la connessione WebSocket.
  3. Chiama conn.subscribe() per registrare un listener per i messaggi dell’actor.
  4. Chiama conn.send() per inviare un messaggio all’actor.
L’esempio seguente si connette a una sessione dell’actor chatRoom, ascolta i messaggi e invia un messaggio:
Per saperne di più sulle connessioni, consulta connessioni.

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:
  1. Imposta tickIntervalMs sulla durata dell’intervallo in millisecondi.
  2. Implementa shouldTick() in modo che restituisca true per continuare i tick e false per fermarli.
  3. In handleTick(), esegui l’operazione per ogni intervallo.
L’esempio seguente esegue un tick ogni secondo mentre almeno due client sono nella sessione, trasmettendo un conto alla rovescia a ogni tick:
Per saperne di più sui tick, consulta handler e impostazioni dei timer.

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:
  1. Chiama schedule() con una chiave e un orario per impostare il wake.
  2. In handleWake(), controlla la chiave ed esegui l’operazione per quel wake.
  3. Quando il wake non serve più, chiama cancelSchedule() con la chiave.
L’esempio seguente pianifica un timeout del turno quando un turno inizia e trasmette un messaggio quando il timeout si attiva:
Per saperne di più sui wake, consulta handler e impostazioni dei timer.

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:
  1. In handleConnect(), controlla conn.identity e chiama conn.reject() per rifiutare un client.
  2. Chiama conn.send() per rispondere solo a quel client.
  3. In handleMessage(), chiama broadcast() per raggiungere tutti i client connessi. Per identificare il mittente, includi nel messaggio campi di conn.
L’esempio seguente rifiuta i client anonimi, invia la cronologia al client che si connette e trasmette i messaggi con l’ID utente del mittente:
Per saperne di più sulle connessioni, consulta connessioni.

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:
  1. In handleStart(), carica i valori da this.storage nei campi della classe.
  2. Dopo ogni modifica, chiama this.storage.put() per salvare il valore aggiornato.
  3. Per reimpostare la sessione, chiama this.storage.delete() o this.storage.deleteAll().
L’esempio seguente carica una plancia all’avvio, la salva dopo ogni mossa e svuota lo storage quando l’ultimo client si disconnette:
Per saperne di più sullo storage, consulta storage.

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:
  1. Valida il messaggio in arrivo prima di scrivere.
  2. Leggi l’ID utente da conn.identity.userId.
  3. Usa this.client.asServiceRole per un accesso elevato. Scrivi con una chiave stabile, come l’ID di sessione, così un handler ripetuto aggiorna lo stesso record.
L’esempio seguente salva un punteggio finale per il client autenticato. Un salvataggio successivo per la stessa sessione aggiorna quel record:
Per saperne di più sull’accesso alle entità, consulta accesso alle entità.

Chiamare una funzione backend per operazioni con secret

Gli actor possono leggere i secret dell’app con secrets.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:
  1. Crea una funzione backend che legge il secret con secrets.get(), esegue l’operazione e restituisce il risultato.
  2. In un handler, chiama this.client.functions.invoke() con il nome della funzione e i dati da inviare.
  3. Usa il risultato nella tua sessione, ad esempio trasmettendolo ai client connessi.
L’esempio seguente mostra una funzione backend che legge una chiave API e restituisce una traduzione:
L’esempio seguente chiama quella funzione da un actor e trasmette il risultato:

Vedi anche

Questa pagina è stata tradotta con l’AI. Per le informazioni più accurate e aggiornate, consulta la versione inglese.