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

# Creare un actor

> Scrivi il tuo primo actor e gestisci il ciclo di vita delle connessioni

<div className="dev-docs-banner">
  <div className="dev-docs-banner-content">
    <div className="dev-docs-banner-title">
      Stai visualizzando la documentazione per sviluppatori
    </div>

    <div className="dev-docs-banner-text">
      Questa documentazione è per sviluppatori che lavorano con la piattaforma
      per sviluppatori di Base44.
    </div>
  </div>
</div>

Crea un [actor](/it/developers/backend/resources/actors/overview#actors) per eseguire logica di backend per una [sessione](/it/developers/backend/resources/actors/overview#sessions) live condivisa da più [client](/it/developers/backend/resources/actors/overview#client), come una chat room o un gioco multiplayer. Un actor gestisce dal tuo backend le connessioni, i messaggi e le disconnessioni dei client.

## File degli actor

Crea gli actor come file TypeScript nella directory degli actor del tuo progetto. Ogni actor si trova in una propria sottodirectory sotto `base44/actors/` con un file `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>

Il nome della cartella diventa il nome dell'actor nell'SDK e determina come i client chiamano l'actor, ad esempio `base44.actors.chatRoom`. Esporta la classe dell'actor come export predefinito del file `entry.ts`.

Puoi includere altri file `.ts`, `.js`, `.json` e `.jsonc` nella directory dell'actor e importarli da `entry.ts`.

## entry.ts

Il file di codice contiene la classe del tuo actor. Importa `Actor` da `base44:runtime/actors` ed esporta come export predefinito una classe che estende `Actor`. Passa i generici `Incoming` e `Outgoing` per tipizzare i messaggi che l'actor riceve e invia.

Implementa i seguenti metodi della classe. Il metodo `handleStart()` è facoltativo:

* `handleStart()`: Carica nei campi della classe i dati di sessione salvati nello storage. Base44 chiama questo handler ogni volta che la sessione si attiva. Così lo stato ripristinato è pronto prima che Base44 gestisca qualsiasi connessione. Per un esempio completo di storage, consulta [rendere persistenti i dati di sessione](/it/developers/backend/resources/actors/sample-flows#persist-session-data).

* `handleConnect()`: Invia lo stato attuale della sessione al client che si connette. Per rifiutare connessioni o identificare i client, consulta [gestire le connessioni dei client](/it/developers/backend/resources/actors/sample-flows#manage-client-connections).

* `handleMessage()`: Aggiorna lo stato della sessione, rendilo persistente e trasmetti la modifica.

* `handleClose()`: Rimuovi qualsiasi stato legato a quella connessione. Se non c'è stato di connessione da eliminare, scrivi un corpo vuoto.

* `handleTick()`: Esegui codice a ogni intervallo di tick. Se l'actor non usa i tick, scrivi un corpo vuoto. Per configurare i tick, consulta [eseguire i tick](/it/developers/backend/resources/actors/sample-flows#run-ticks). Per pianificare un risveglio singolo, consulta [pianificare i wake](/it/developers/backend/resources/actors/sample-flows#schedule-wakes).

L'esempio seguente mostra un actor `ChatRoom` semplificato:

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

## Vedi anche

* [Panoramica degli actor](/it/developers/backend/resources/actors/overview): Concetti e terminologia
* [File e codice degli actor](/it/developers/backend/resources/actors/reference): API completa della classe di backend
* [Actor: flussi di esempio](/it/developers/backend/resources/actors/sample-flows): Altri pattern per timer, connessioni, storage ed entità
* [`actors deploy`](/it/developers/references/cli/commands/actors-deploy): Distribuisci il tuo actor su Base44

<Note>Questa pagina è stata tradotta con l'AI. Per le informazioni più accurate e aggiornate, consulta la [versione inglese](/). </Note>


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