> ## 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.

# Einen Actor erstellen

> Schreibe deinen ersten Actor und verwalte den Verbindungslebenszyklus

<div className="dev-docs-banner">
  <div className="dev-docs-banner-content">
    <div className="dev-docs-banner-title">
      Du siehst gerade die Entwicklerdokumentation
    </div>

    <div className="dev-docs-banner-text">
      Diese Dokumentation richtet sich an Entwickler, die mit der Base44-Entwicklerplattform arbeiten.
    </div>
  </div>
</div>

Erstelle einen [Actor](/de/developers/backend/resources/actors/overview#actors), um Backend-Logik für eine Live-[Session](/de/developers/backend/resources/actors/overview#sessions) auszuführen. Mehrere [Clients](/de/developers/backend/resources/actors/overview#client) teilen sich diese Session, etwa einen Chatraum oder ein Multiplayer-Spiel. Ein Actor verarbeitet Client-Verbindungen, Nachrichten und Verbindungsabbrüche in deinem Backend.

## Actor-Dateien

Erstelle Actors als TypeScript-Dateien im Actors-Verzeichnis deines Projekts. Jeder Actor liegt in einem eigenen Unterverzeichnis unter `base44/actors/` mit einer Datei `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>

Der Ordnername wird zum Actor-Namen im SDK. Er bestimmt, wie Clients den Actor aufrufen, zum Beispiel `base44.actors.chatRoom`. Exportiere die Actor-Klasse als Default-Export aus der Datei `entry.ts`.

Du kannst weitere `.ts`-, `.js`-, `.json`- und `.jsonc`-Dateien in das Actor-Verzeichnis legen und sie aus `entry.ts` importieren.

## entry.ts

Die Codedatei enthält deine Actor-Klasse. Importiere `Actor` aus `base44:runtime/actors` und exportiere eine Klasse, die `Actor` erweitert, als Default-Export. Übergib die Generics `Incoming` und `Outgoing`, um die Nachrichten zu typisieren, die der Actor empfängt und sendet.

Implementiere die folgenden Klassenmethoden. Die Methode `handleStart()` ist optional:

* `handleStart()`: Lade gespeicherte Session-Daten aus dem Speicher in Klassenfelder. Base44 ruft diesen Handler bei jeder Aktivierung der Session auf. So ist dein wiederhergestellter Zustand bereit, bevor Base44 eine Verbindung verarbeitet. Ein vollständiges Speicherbeispiel findest du unter [Session-Daten persistieren](/de/developers/backend/resources/actors/sample-flows#persist-session-data).

* `handleConnect()`: Sende den aktuellen Session-Zustand an den verbindenden Client. Wie du Verbindungen ablehnst oder Clients identifizierst, erfährst du unter [Client-Verbindungen verwalten](/de/developers/backend/resources/actors/sample-flows#manage-client-connections).

* `handleMessage()`: Aktualisiere den Session-Zustand, persistiere ihn und sende die Änderung per Broadcast.

* `handleClose()`: Entferne jeglichen Zustand, der an diese Verbindung gebunden ist. Wenn es keinen Verbindungszustand zu löschen gibt, schreibe einen leeren Rumpf.

* `handleTick()`: Führe Code in jedem Tick-Intervall aus. Wenn der Actor keine Ticks verwendet, schreibe einen leeren Rumpf. Wie du Ticks einrichtest, erfährst du unter [Ticks ausführen](/de/developers/backend/resources/actors/sample-flows#run-ticks). Wie du einen einmaligen Wake planst, erfährst du unter [Wakes planen](/de/developers/backend/resources/actors/sample-flows#schedule-wakes).

Das folgende Beispiel zeigt einen vereinfachten `ChatRoom`-Actor:

```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() {}
}
```

## Siehe auch

* [Actors – Übersicht](/de/developers/backend/resources/actors/overview): Konzepte und Terminologie
* [Actors – Dateien und Code](/de/developers/backend/resources/actors/reference): Vollständige API der Backend-Klasse
* [Actors – Beispielabläufe](/de/developers/backend/resources/actors/sample-flows): Weitere Muster für Timer, Verbindungen, Speicher und Entitäten
* [`actors deploy`](/de/developers/references/cli/commands/actors-deploy): Deploye deinen Actor in Base44

<Note>Diese Seite wurde mit KI übersetzt. Die genauesten und aktuellsten Informationen findest du in der [englischen Version](/). </Note>


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