Skip to main content
Vous consultez la documentation pour développeurs
Cette documentation est destinée aux développeurs travaillant avec la plateforme développeur Base44.
Utilisez ces exemples de flux comme point de départ pour votre implémentation.

Connecter un client à une session

Lorsque le frontend doit rejoindre une session en direct, recevoir des messages de l’acteur et lui envoyer des messages, connectez un client à une session d’acteur. Pour connecter un client à une session :
  1. Appelez base44.actors.ActorName(sessionId) pour sélectionner la session.
  2. Appelez .connect() pour ouvrir la connexion WebSocket.
  3. Appelez conn.subscribe() pour enregistrer un écouteur des messages de l’acteur.
  4. Appelez conn.send() pour envoyer un message à l’acteur.
L’exemple suivant se connecte à une session de l’acteur chatRoom, écoute les messages et envoie un message :
Pour en savoir plus sur les connexions, consultez connexions.

Exécuter des ticks

Lorsqu’une tâche doit se répéter à intervalle régulier pendant que des clients sont dans la session, exécutez des ticks. Par exemple, pour diffuser l’état d’un jeu ou mettre à jour un minuteur de manche. Pour exécuter des ticks :
  1. Définissez tickIntervalMs sur la durée de l’intervalle en millisecondes.
  2. Implémentez shouldTick() pour renvoyer true afin de continuer les ticks, et false pour les arrêter.
  3. Dans handleTick(), exécutez la tâche de chaque intervalle.
L’exemple suivant exécute un tick chaque seconde tant qu’au moins deux clients sont dans la session, et diffuse un compte à rebours à chaque tick :
Pour en savoir plus sur les ticks, consultez gestionnaires et paramètres de minuteur.

Planifier des réveils

Lorsqu’une tâche doit s’exécuter une seule fois à un moment précis, que la session soit active ou inactive, planifiez un réveil. Par exemple, pour terminer un tour après 30 secondes ou fermer un lobby vide. Pour planifier un réveil :
  1. Appelez schedule() avec une clé et une heure pour programmer le réveil.
  2. Dans handleWake(), vérifiez la clé et exécutez la tâche de ce réveil.
  3. Lorsque le réveil n’est plus nécessaire, appelez cancelSchedule() avec la clé.
L’exemple suivant planifie un délai d’expiration au début d’un tour et diffuse un message lorsque le délai expire :
Pour en savoir plus sur les réveils, consultez gestionnaires et paramètres de minuteur.

Gérer les connexions des clients

Lorsque vous devez décider qui peut rejoindre une session, répondre à un client précis et atteindre tous les clients de la session, gérez les connexions des clients. Pour gérer les connexions des clients :
  1. Dans handleConnect(), vérifiez conn.identity et appelez conn.reject() pour refuser un client.
  2. Appelez conn.send() pour répondre uniquement à ce client.
  3. Dans handleMessage(), appelez broadcast() pour atteindre tous les clients connectés. Pour identifier l’expéditeur, incluez des champs de conn dans le message.
L’exemple suivant refuse les clients anonymes, envoie l’historique au client qui se connecte et diffuse les messages avec l’ID utilisateur de l’expéditeur :
Pour en savoir plus sur les connexions, consultez connexions.

Persister les données de session

Lorsque des valeurs doivent survivre à une période d’inactivité, persistez les données de session. Par exemple, un plateau, une liste d’historique ou le tour en cours. Pour persister les données de session :
  1. Dans handleStart(), chargez les valeurs de this.storage dans les champs de la classe.
  2. Après chaque changement, appelez this.storage.put() pour enregistrer la valeur mise à jour.
  3. Pour réinitialiser la session, appelez this.storage.delete() ou this.storage.deleteAll().
L’exemple suivant charge un plateau au démarrage, l’enregistre après chaque coup et vide le stockage lorsque le dernier client se déconnecte :
Pour en savoir plus sur le stockage, consultez stockage.

Écrire des données d’entité depuis une session

Lorsque la session doit créer ou mettre à jour des enregistrements de l’application, écrivez des données d’entité. Par exemple, un score final ou une commande terminée. Pour écrire des données d’entité depuis une session :
  1. Validez le message entrant avant d’écrire.
  2. Lisez l’ID utilisateur depuis conn.identity.userId.
  3. Utilisez this.client.asServiceRole pour un accès élevé. Écrivez avec une clé stable, comme l’ID de session, pour qu’un gestionnaire réexécuté mette à jour le même enregistrement.
L’exemple suivant enregistre un score final pour le client authentifié. Un enregistrement ultérieur pour la même session met à jour cet enregistrement :
Pour en savoir plus sur l’accès aux entités, consultez accès aux entités.

Appeler une fonction backend pour les tâches avec secret

Les acteurs peuvent lire les secrets de l’application avec secrets.get(). Lorsqu’un gestionnaire a besoin d’une tâche qui utilise un secret, comme appeler une API externe avec une clé API, nous vous recommandons d’appeler une fonction backend. La fonction lit le secret et renvoie le résultat, jamais le secret. Pour appeler une fonction backend depuis un acteur :
  1. Créez une fonction backend qui lit le secret avec secrets.get(), effectue la tâche et renvoie le résultat.
  2. Dans un gestionnaire, appelez this.client.functions.invoke() avec le nom de la fonction et les données à envoyer.
  3. Utilisez le résultat dans votre session, par exemple en le diffusant aux clients connectés.
L’exemple suivant montre une fonction backend qui lit une clé API et renvoie une traduction :
L’exemple suivant appelle cette fonction depuis un acteur et diffuse le résultat :

Voir aussi

Cette page a été traduite par IA. Pour les informations les plus précises et à jour, consultez la version anglaise.