Skip to main content
Du siehst gerade die Entwicklerdokumentation
Diese Dokumentation richtet sich an Entwickler, die mit der Base44-Entwicklerplattform arbeiten.
Nutze diese Beispielabläufe als Ausgangspunkt für deine Implementierung.

Einen Client mit einer Session verbinden

Wenn das Frontend einer Live-Session beitreten, Nachrichten vom Actor empfangen und Nachrichten an den Actor senden soll, verbinde einen Client mit einer Actor-Session. So verbindest du einen Client mit einer Session:
  1. Rufe base44.actors.ActorName(sessionId) auf, um die Session auszuwählen.
  2. Rufe .connect() auf, um die WebSocket-Verbindung zu öffnen.
  3. Rufe conn.subscribe() auf, um einen Listener für Nachrichten vom Actor zu registrieren.
  4. Rufe conn.send() auf, um eine Nachricht an den Actor zu senden.
Das folgende Beispiel verbindet sich mit einer chatRoom-Actor-Session, hört auf Nachrichten und sendet eine Nachricht:
Mehr über Verbindungen erfährst du unter Verbindungen.

Ticks ausführen

Wenn sich Arbeit in einem Intervall wiederholen soll, während Clients in der Session sind, führe Ticks aus. Beispiele sind das Broadcasten des Spielzustands oder das Aktualisieren eines Runden-Timers. So führst du Ticks aus:
  1. Setze tickIntervalMs auf die Intervalllänge in Millisekunden.
  2. Implementiere shouldTick() so, dass es true zurückgibt, um weiter zu ticken, und false, um zu stoppen.
  3. Führe in handleTick() die Arbeit für jedes Intervall aus.
Das folgende Beispiel tickt jede Sekunde, solange mindestens zwei Clients in der Session sind. Bei jedem Tick sendet es einen Countdown per Broadcast:
Mehr über Ticks erfährst du unter Timer-Handler und Einstellungen.

Wakes planen

Wenn Arbeit einmalig zu einem bestimmten Zeitpunkt laufen soll, egal ob die Session aktiv oder inaktiv ist, plane einen Wake. Beispiele sind das Beenden eines Zugs nach 30 Sekunden oder das Schließen einer leeren Lobby. So planst du einen Wake:
  1. Rufe schedule() mit einem Schlüssel und einem Zeitpunkt auf, um den Wake zu planen.
  2. Prüfe in handleWake() den Schlüssel und führe die Arbeit für diesen Wake aus.
  3. Wenn der Wake nicht mehr gilt, rufe cancelSchedule() mit dem Schlüssel auf.
Das folgende Beispiel plant ein Zug-Timeout, wenn ein Zug beginnt. Wenn das Timeout ausgelöst wird, sendet es eine Nachricht per Broadcast:
Mehr über Wakes erfährst du unter Timer-Handler und Einstellungen.

Client-Verbindungen verwalten

Wenn du festlegen musst, wer einer Session beitreten darf, einem bestimmten Client antworten oder alle Clients in der Session erreichen willst, verwalte Client-Verbindungen. So verwaltest du Client-Verbindungen:
  1. Prüfe in handleConnect() die Eigenschaft conn.identity und rufe conn.reject() auf, um einen Client abzulehnen.
  2. Rufe conn.send() auf, um nur diesem Client zu antworten.
  3. Rufe in handleMessage() broadcast() auf, um jeden verbundenen Client zu erreichen. Um den Absender zu identifizieren, füge Felder aus conn in die Nachricht ein.
Das folgende Beispiel lehnt anonyme Clients ab, sendet dem verbindenden Client den Verlauf und sendet Nachrichten mit der Nutzer-ID des Absenders per Broadcast:
Mehr über Verbindungen erfährst du unter Verbindungen.

Session-Daten persistieren

Wenn Werte eine Leerlaufphase überstehen müssen, persistiere Session-Daten. Beispiele sind ein Spielbrett, eine Verlaufsliste oder der aktuelle Zug. So persistierst du Session-Daten:
  1. Lade in handleStart() Werte aus this.storage in Klassenfelder.
  2. Rufe nach jeder Änderung this.storage.put() auf, um den aktualisierten Wert zu speichern.
  3. Um die Session zurückzusetzen, rufe this.storage.delete() oder this.storage.deleteAll() auf.
Das folgende Beispiel lädt beim Start ein Spielbrett und speichert es nach jedem Zug. Wenn der letzte Client die Verbindung trennt, leert es den Speicher:
Mehr über Speicher erfährst du unter Speicher.

Entitätsdaten aus einer Session schreiben

Wenn die Session App-Datensätze erstellen oder aktualisieren muss, schreibe Entitätsdaten. Beispiele sind ein Endstand oder eine abgeschlossene Bestellung. So schreibst du Entitätsdaten aus einer Session:
  1. Validiere die eingehende Nachricht vor dem Schreiben.
  2. Lies die Nutzer-ID aus conn.identity.userId.
  3. Verwende this.client.asServiceRole für erweiterten Zugriff. Schreibe mit einem stabilen Schlüssel, etwa der Session-ID. So aktualisiert ein wiederholter Handler denselben Datensatz.
Das folgende Beispiel speichert einen Endstand für den authentifizierten Client. Ein späteres Speichern für dieselbe Session aktualisiert diesen Datensatz:
Mehr über den Zugriff auf Entitäten erfährst du unter Zugriff auf Entitäten.

Eine Backend-Funktion für Aufgaben mit Secrets aufrufen

Actors können App-Secrets mit secrets.get() lesen. Wenn ein Handler eine Aufgabe mit einem Secret ausführen muss, etwa eine externe API mit einem API-Schlüssel aufrufen, empfehlen wir den Aufruf einer Backend-Funktion. Die Funktion liest das Secret und gibt das Ergebnis zurück, niemals das Secret. So rufst du eine Backend-Funktion aus einem Actor auf:
  1. Erstelle eine Backend-Funktion, die das Secret mit secrets.get() liest, die Aufgabe erledigt und das Ergebnis zurückgibt.
  2. Rufe in einem Handler this.client.functions.invoke() mit dem Funktionsnamen und den zu sendenden Daten auf.
  3. Verwende das Ergebnis in deiner Session, etwa indem du es per Broadcast an verbundene Clients sendest.
Das folgende Beispiel zeigt eine Backend-Funktion, die einen API-Schlüssel liest und eine Übersetzung zurückgibt:
Das folgende Beispiel ruft diese Funktion aus einem Actor auf und sendet das Ergebnis per Broadcast:

Siehe auch

Diese Seite wurde mit KI übersetzt. Die genauesten und aktuellsten Informationen findest du in der englischen Version.