-
Notifications
You must be signed in to change notification settings - Fork 1
Server API
Die Server-API ist der Kern jeder UserApp. Über die zentrale Klasse KnuddelsServer hast du Zugriff auf alle serverseitigen Funktionen.
KnuddelsServer ist das globale Objekt, über das du auf alle wichtigen Subsysteme zugreifst:
// Zugriff auf die wichtigsten Objekte
var channel = KnuddelsServer.getChannel();
var persistence = KnuddelsServer.getPersistence();
var bot = KnuddelsServer.getDefaultBotUser();
var logger = KnuddelsServer.getDefaultLogger();
var userAccess = KnuddelsServer.getUserAccess();
var appAccess = KnuddelsServer.getAppAccess();
var paymentAccess = KnuddelsServer.getPaymentAccess();
var toplistAccess = KnuddelsServer.getToplistAccess();
var extServer = KnuddelsServer.getExternalServerAccess();
var serverInfo = KnuddelsServer.getChatServerInfo();Analog zu Browser-JavaScript gibt es Timer:
// Einmalige Verzögerung (in Millisekunden)
var timerId = KnuddelsServer.setTimeout(function() {
logger.info('5 Sekunden vergangen!');
}, 5000);
// Wiederkehrender Timer
var intervalId = KnuddelsServer.setInterval(function() {
logger.info('Wird alle 10 Sekunden ausgeführt');
}, 10000);
// Timer stoppen
KnuddelsServer.clearTimeout(timerId);
KnuddelsServer.clearInterval(intervalId);// Weitere JavaScript-Dateien laden
KnuddelsServer.require('helpers.js');
KnuddelsServer.execute('setup.js');
// Verfügbare Dateien auflisten
var files = KnuddelsServer.listFiles('/');→ Vollständige KnuddelsServer-Dokumentation
Auf dem Server steht kein console.log zur Verfügung. Nutze stattdessen den Logger:
var logger = KnuddelsServer.getDefaultLogger();
logger.debug('Debug-Nachricht'); // Niedrigste Stufe
logger.info('Info-Nachricht'); // Standard-Info
logger.warn('Warnung!'); // Warnungen
logger.error('Fehler aufgetreten!'); // Fehler
logger.fatal('Kritischer Fehler!'); // SchwerwiegendDie Log-Ausgaben sind im App-Log sichtbar, das du über /apps im Channel einsehen kannst. Über /apps kannst du auch einstellen, welche Log-Level du im Channel sehen möchtest.
Das Channel-Objekt liefert Informationen über den Channel, in dem die App läuft:
var channel = KnuddelsServer.getChannel();
// Channel-Infos
var name = channel.getChannelName();
var rootName = channel.getRootChannelName();
var isVideo = channel.isVideoChannel();
// Online-Nutzer abrufen
var alleNutzer = channel.getOnlineUsers(UserType.Human);
var botNutzer = channel.getOnlineUsers(UserType.AppBot);
// Channel-Konfiguration
var config = channel.getChannelConfiguration();
var restrictions = channel.getChannelRestrictions();
var design = channel.getChannelDesign();Mit UserAccess kannst du Nutzer anhand ihres Nicknamens finden:
var userAccess = KnuddelsServer.getUserAccess();
var nick = 'SomeUser';
// Prüfen ob der Nutzer existiert
if (userAccess.exists(nick)) {
var userId = userAccess.getUserId(nick);
// Prüfen ob Zugriff erlaubt ist
if (userAccess.mayAccess(userId)) {
var user = userAccess.getUserById(userId);
// user-Objekt verwenden...
}
}Über AppAccess kannst du mit anderen Apps im selben Channel kommunizieren:
var appAccess = KnuddelsServer.getAppAccess();
// Eigene App-Instanz
var ownInstance = appAccess.getOwnInstance();
// Alle laufenden Apps im Channel
var apps = appAccess.getAllRunningAppsInChannel();
// Event an eine andere App senden
var otherApp = appAccess.getRunningAppInChannel('entwickler.uid.appkey');
if (otherApp) {
otherApp.sendAppEvent('greeting', { message: 'Hallo von meiner App!' });
}Informationen über den Server:
var serverInfo = KnuddelsServer.getChatServerInfo();
var serverId = serverInfo.getServerId();
var isTestSystem = serverInfo.isTestSystem();→ ChatServerInfo-Dokumentation
Die komplette API-Dokumentation mit allen Klassen, Methoden und Parametern findest du unter:
Die API ist in folgende Module gegliedert:
| Modul | Beschreibung |
|---|---|
| Core | Kernklassen der UserApps-API: App-Lifecycle, Server-Zugriff, User-Interaktion und grundlegende Hilfsmittel |
| User | Klassen für User-Informationen, Geschlecht, Status, Client-Typ und Bot-Steuerung |
| Channel | Klassen für den Zugriff auf Channel-Eigenschaften, Konfiguration, Rechte und Einschränkungen |
| HTMLUI | Klassen für HTML-basierte App-Inhalte, Overlays und die Kommunikation mit dem Client-Frontend |
| Persistence | Klassen für die persistente Datenspeicherung von Apps und userbezogenen Daten |
| Knuddel | Klassen für Knuddel-Transaktionen, Knuddel-Töpfe und Knuddel-Beträge |
| Payment | Klassen für In-App-Käufe, den Knuddel-Shop und Loyalty-Programm |
| Toplist | Klassen für die Erstellung und Verwaltung von Toplisten innerhalb von Apps |
| GlobalApps | Klassen für die Konfiguration und Verwaltung von globalen Apps und deren Instanzen |
| ExternalServerAccess | Klassen für HTTP-Zugriffe auf externe Server, inklusive Request/Response-Handling und HTTP-Header |
| Dice | Klassen für Würfelspiele: Konfiguration, Ergebnisse und Events |
- Erste Schritte – Voraussetzungen, Einrichtung, deine erste App
-
Projektstruktur – Dateien, Ordner und
app.config - Dev-Server – Entwicklungsumgebung und Testen
-
App-Lifecycle und Hooks –
onAppStart,onUserJoinedund Co. -
Server-API Grundlagen –
KnuddelsServer,Channel,Logger - Client-Server-Kommunikation – Events zwischen Frontend und Backend
-
Benutzer und Nachrichten –
User,BotUser, Nachrichten senden - HTML-UI und AppContent – Popups, Overlays, Globale Apps-UI
-
Datenspeicherung –
AppPersistence,UserPersistence -
Knuddel und Zahlungen – Transfers, Käufe,
KnuddelAccount - Toplisten – Ranglisten und Highscores
- Globale Apps – Apps im "Apps & Spiele"-Menü
- Quests – Aufgaben für Nutzer
- Externe Server-Kommunikation – HTTP-Requests an externe APIs
- Tutorials – Übersicht aller Tutorials
- Tic-Tac-Toe – Multiplayer-Spiel mit Bestenliste
- Best Practices – Tipps, Limits und häufige Fehler
- FAQ – Häufig gestellte Fragen
- KCode-Formatierung – Nachrichten-Formatierung mit KCode