> ## Documentation Index
> Fetch the complete documentation index at: https://docs.base44.com/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> Internal links on these pages omit the .md extension. Append .md to a docs page URL, or send an Accept: text/markdown header, to get that page as markdown.

# Créer un acteur

> Écrivez votre premier acteur et gérez le cycle de vie des connexions

<div className="dev-docs-banner">
  <div className="dev-docs-banner-content">
    <div className="dev-docs-banner-title">
      Vous consultez la documentation pour développeurs
    </div>

    <div className="dev-docs-banner-text">
      Cette documentation est destinée aux développeurs travaillant avec la plateforme développeur Base44.
    </div>
  </div>
</div>

Créez un [acteur](/fr/developers/backend/resources/actors/overview#actors) pour exécuter une logique backend dans une [session](/fr/developers/backend/resources/actors/overview#sessions) en direct partagée par plusieurs [clients](/fr/developers/backend/resources/actors/overview#client), comme un salon de discussion ou un jeu multijoueur. Un acteur gère depuis votre backend les connexions, les messages et les déconnexions des clients.

## Fichiers d'acteur

Créez les acteurs sous forme de fichiers TypeScript dans le répertoire des acteurs de votre projet. Chaque acteur se trouve dans son propre sous-répertoire sous `base44/actors/`, avec un fichier `entry.ts` :

<Tree>
  <Tree.Folder name="base44" defaultOpen>
    <Tree.Folder name="actors" defaultOpen>
      <Tree.Folder name="chatRoom" defaultOpen>
        <Tree.File name="entry.ts" />
      </Tree.Folder>
    </Tree.Folder>
  </Tree.Folder>
</Tree>

Le nom du dossier devient le nom de l'acteur dans le SDK. Il détermine comment les clients appellent l'acteur, par exemple `base44.actors.chatRoom`. Exportez la classe de l'acteur comme export par défaut du fichier `entry.ts`.

Vous pouvez inclure d'autres fichiers `.ts`, `.js`, `.json` et `.jsonc` dans le répertoire de l'acteur et les importer depuis `entry.ts`.

## entry.ts

Le fichier de code contient la classe de votre acteur. Importez `Actor` depuis `base44:runtime/actors` et exportez par défaut une classe qui étend `Actor`. Passez les génériques `Incoming` et `Outgoing` pour typer les messages que l'acteur reçoit et envoie.

Implémentez les méthodes de classe suivantes. La méthode `handleStart()` est facultative :

* `handleStart()` : chargez les données de session enregistrées depuis le stockage dans les champs de la classe. Base44 appelle ce gestionnaire à chaque activation de la session. Votre état restauré est ainsi prêt avant que Base44 ne traite une connexion. Pour un exemple complet de stockage, consultez [persister les données de session](/fr/developers/backend/resources/actors/sample-flows#persist-session-data).

* `handleConnect()` : envoyez l'état actuel de la session au client qui se connecte. Pour refuser des connexions ou identifier des clients, consultez [gérer les connexions des clients](/fr/developers/backend/resources/actors/sample-flows#manage-client-connections).

* `handleMessage()` : mettez à jour l'état de la session, persistez-le et diffusez le changement.

* `handleClose()` : supprimez tout état lié à cette connexion. S'il n'y a aucun état de connexion à effacer, écrivez un corps vide.

* `handleTick()` : exécutez du code à chaque intervalle de tick. Si l'acteur n'utilise pas de ticks, écrivez un corps vide. Pour configurer des ticks, consultez [exécuter des ticks](/fr/developers/backend/resources/actors/sample-flows#run-ticks). Pour planifier un réveil unique, consultez [planifier des réveils](/fr/developers/backend/resources/actors/sample-flows#schedule-wakes).

L'exemple suivant montre un acteur `ChatRoom` simplifié :

```typescript theme={null}
import { Actor } from "base44:runtime/actors";

type Incoming = { type: "message"; text: string };
type Outgoing =
  | { type: "history"; messages: string[] }
  | { type: "message"; text: string };

export default class ChatRoom extends Actor<Incoming, Outgoing> {
  messages: string[] = [];

  async handleStart() {
    this.messages = (await this.storage.get<string[]>("messages")) ?? [];
  }

  async handleConnect(conn) {
    conn.send({ type: "history", messages: this.messages });
  }

  async handleMessage(_conn, msg) {
    this.messages.push(msg.text);
    await this.storage.put("messages", this.messages);
    this.broadcast({ type: "message", text: msg.text });
  }

  async handleClose(_conn) {}

  async handleTick() {}
}
```

## Voir aussi

* [Présentation des acteurs](/fr/developers/backend/resources/actors/overview) : concepts et terminologie
* [Fichiers et code des acteurs](/fr/developers/backend/resources/actors/reference) : API complète de la classe backend
* [Acteurs : exemples de flux](/fr/developers/backend/resources/actors/sample-flows) : d'autres modèles pour les minuteurs, les connexions, le stockage et les entités
* [`actors deploy`](/fr/developers/references/cli/commands/actors-deploy) : déployer votre acteur sur Base44

<Note>Cette page a été traduite par IA. Pour les informations les plus précises et à jour, consultez la [version anglaise](/). </Note>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.