- Messagerie en temps réel : envoyez et recevez des messages avec les clients via WebSockets.
- Stockage persistant : conservez l’état de la session entre les périodes d’inactivité.
- Tâches planifiées : exécutez une logique à intervalle fixe ou à un moment précis.
Acteurs
Actor est la classe que vous étendez dans votre backend.
La classe d’acteur définit le comportement d’une session en direct. Avec les acteurs, vous pouvez :
- Gérer les connexions : accepter ou refuser un client qui se connecte à la session, et identifier qui se connecte.
- Traiter les messages : recevoir un message d’un client, mettre à jour l’état de la session, et répondre à un client ou diffuser à tous.
- Planifier des tâches : exécuter une logique à intervalle régulier ou à un moment planifié.
Sessions
Une session est une instance en cours d’exécution d’un acteur, identifiée par le nom de l’acteur et un ID de session que vous choisissez.Chaque session gère indépendamment son propre état, son stockage et ses connexions clients.
Connexions
Une connexion représente le WebSocket d’un client vers une session. Chaque client qui rejoint la session obtient une connexion unique. Un acteur utilise cette connexion pour identifier qui se connecte, gérer les connexions clients et envoyer des messages. Pour en savoir plus, consultez connexions. Pour un exemple de flux, consultez gérer les connexions des clients.Sessions actives et inactives
Une session est toujours dans l’un des états suivants :- Active : la session est en direct et traite des événements. Une session devient active lorsqu’un client se connecte, lorsqu’un client envoie un message à une session inactive, ou lorsqu’une heure de réveil planifiée arrive.
- Inactive : la session ne traite pas d’événements. Une session devient inactive peu après avoir traité son dernier message et lorsque toutes les tâches planifiées s’arrêtent. La session conserve ses données stockées, ses heures planifiées et ses connexions ouvertes jusqu’à ce qu’elle redevienne active.
Client
Utilisezbase44.actors dans le SDK JavaScript pour connecter un client à une session d’acteur et échanger des messages.
Le SDK des acteurs prend en charge les fonctionnalités suivantes :
- Connecter : ouvrir une connexion WebSocket vers une session.
- S’abonner : recevoir les messages de l’acteur.
- Envoyer : envoyer des messages à l’acteur.
- Fermer : fermer la connexion WebSocket vers l’acteur.
Interaction entre acteurs et clients
Le diagramme suivant montre l’interaction générale entre un client et un acteur :- Le client se connecte à l’acteur via un WebSocket.
- La session s’active.
handleStart()s’exécute au premier démarrage et à chaque réactivation de la session après une période d’inactivité. - L’acteur traite la connexion. Vous pouvez vérifier l’identité du client et refuser la connexion, ou envoyer l’état actuel.
- Le client envoie un message.
- L’acteur traite le message. Vous pouvez valider le format et les autorisations de l’expéditeur avant de modifier l’état de la session.
- L’acteur diffuse la mise à jour à tous les clients connectés, ou répond uniquement à l’expéditeur.
- Le client ferme la connexion.
- L’acteur traite la déconnexion. Vous pouvez supprimer l’état propre à la connexion.
Messages en temps réel
Chaque client connecté appartient à une session et peut envoyer des messages en temps réel via WebSockets. Les clients peuvent aussi écouter les messages entrants avecsubscribe().
Base44 propose plusieurs fonctionnalités en temps réel qui utilisent un écouteur par abonnement :
subscribe()des acteurs écoute les messages que l’acteur envoie aux clients connectés.subscribe()des entités écoute les modifications des entités de l’application.
- Répondre à un client précis.
- Diffuser à tous les clients connectés.
- Lister les clients actuellement connectés.
- Identifier chaque client et vérifier s’il est connecté à son compte.
Types de messages
Un client et un acteur échangent des messages via une connexion. Les messages se répartissent dans les types suivants :- Messages entrants : ce qu’un client connecté envoie à l’acteur, comme un texte, un coup ou un vote. Le client les envoie avec
send(), et l’acteur les reçoit danshandleMessage(). - Messages sortants : ce que l’acteur envoie aux clients connectés, comme une réponse à un client, une diffusion à tous les clients connectés ou le plateau actuel quand quelqu’un rejoint la session. L’acteur les envoie avec
conn.send()oubroadcast(), et le client les reçoit dans un callbacksubscribe().
- Backend : passez les types
IncomingetOutgoingcomme génériques à la classeActor. Pour un exemple complet, consultez créer un acteur. - Client : étendez l’interface
ActorRegistryavec les mêmes formes, pour que TypeScript vérifie les types desend()etsubscribe().
Stockage
Les acteurs proposent plusieurs options de stockage selon la façon dont votre session utilise et conserve les données :- Stockage en mémoire : l’état de travail qui réside dans les champs de la classe pendant que la session est active, et qui se réinitialise lorsque la session devient inactive.
- Stockage persistant : un magasin clé-valeur pour les données qui doivent survivre quand la session devient inactive.
Stockage en mémoire
Les champs de la classe contiennent l’état de travail pendant que la session est active, comme le plateau actuel ou un minuteur de manche. Utilisez le stockage en mémoire lorsque vos données changent souvent et n’ont pas besoin de persister quand la session devient inactive, comme un score en direct ou la position d’un curseur. Lorsqu’une session devient inactive, les champs de la classe se réinitialisent.Stockage persistant
Chaque session possède son propre magasin clé-valeur, que vous gérez entièrement. Utilisez le stockage persistant lorsque vos données doivent survivre quand la session devient inactive, comme un historique de discussion ou un plateau de jeu. Pour stocker des données disponibles dans toute l’application, utilisez les entités. Pour en savoir plus sur le stockage des acteurs, consultez stockage.Restaurer l’état
Lorsqu’une session devient inactive, l’état en mémoire se réinitialise. Le stockage persistant survit, mais la session ne recharge pas automatiquement les données stockées en mémoire lors de sa réactivation. UtilisezhandleStart() pour restaurer les données persistantes, comme l’historique de discussion ou le plateau de jeu.
Pour un exemple de flux, consultez persister les données de session.
Tâches planifiées
Les acteurs permettent à une session d’exécuter une logique selon un planning, indépendamment des messages des clients :- Ticks : exécutez du code à intervalle régulier et gardez la session active pendant qu’ils se répètent.
- Réveils : exécutez du code une seule fois au moment choisi, que la session soit active ou inactive.
Ticks
Les ticks exécutent du code à intervalle régulier et gardent la session active pendant qu’ils se répètent. UtilisezshouldTick() pour définir les conditions d’exécution des ticks.
Un acteur réévalue shouldTick() après chaque connexion, message, déconnexion et tick. Les ticks s’arrêtent donc dès que la condition n’est plus remplie.
Les ticks nécessitent au moins un client connecté.
- Choisir la durée de chaque intervalle.
- Définir une condition qui démarre et arrête les ticks, comme « au moins deux joueurs sont dans la session ».
- Écrire le code qui s’exécute à chaque intervalle.
Réveils
Un réveil s’exécute une seule fois au moment que vous choisissez, que la session soit active ou inactive. Avec les réveils, vous pouvez :- Planifier le moment où un réveil s’exécute.
- Implémenter la logique qui s’exécute lors d’un réveil.
Déployer un acteur
Déployez les acteurs avecactors deploy. Pour pousser toutes les ressources du projet en une fois, utilisez deploy. Le déploiement ajoute et met à jour les acteurs distants et laisse les autres en place.
Supprimer un acteur
Pour supprimer un acteur :- Exécutez
actors deletepour supprimer l’acteur distant de Base44. - Supprimez le répertoire de l’acteur de votre projet local.
Si vous ne supprimez pas l’acteur de votre projet local, le prochain
actors deploy ou deploy recrée et déploie l’acteur dans votre projet Base44.Voir aussi
- Créer un acteur : fichiers d’acteur et classe minimale
- Acteurs : exemples de flux : cycle de vie, minuteurs, connexions, stockage, entités et fonctions backend
- Fichiers et code des acteurs : API complète de la classe backend
- Référence SDK
actors: API du SDK client
Cette page a été traduite par IA. Pour les informations les plus précises et à jour, consultez la version anglaise.