Was ist iFrame Lobby und wie man es integriert
Was ist iFrame Lobby
iFrame Lobby ist ein eingebautes Lobby-Modul (Spielekatalog, Banner, Kategorien, Suche, Schnellstart), das beim Inhaltsanbieter/Aggregator gehostet wird und innerhalb der Betreiberseite über'
Die Schlüsselidee: Der Betreiber schreibt die Lobby nicht von Grund auf neu, sondern verbindet das Fertige und erhält so schnelle Time-to-Market, Browser-übergreifende Unterstützung und Updates ohne Releases auf seiner Seite.
Wenn es angebracht ist
Schneller Start eines neuen Anbieters/Vertical.
Wir brauchen ein einheitliches Schaufenster für mehrere Länder/Marken.
Begrenzter Frontend-Befehl beim Betreiber.
Vor- und Nachteile
Vorteile: Geschwindigkeit, einheitliche Codebasis, Auto-Loading neuer Produkte, konsistente Anbieteranalyse.
Nachteile: weniger Kontrolle über die Pixel-Perfektion, Abhängigkeit von der Anbieter-App, Feinheiten des Tracking, SEO-Einschränkungen (Inhalte im iframe werden nicht als Teil Ihres DOM indiziert).
Grundlegende Architektur
1. Front (Operator): Seite '/casino 'mit Slots, in die'
2. Auth-Pad: Das kurzlebige' sessionToken'(JWT/opaque) wird im Backend des Operators generiert.
3. Anbieter-Lobby: validiert Token, ersetzt Sprache/Währung/Grenzen, rendert Spiele und Banner.
4. Messaging-Bus: 'Fenster. postMessage' zwischen Seite und iframe für Events (Balance, Spielstart, Kasse öffnen etc.).
5. Cashier/KYC/RG: werden auf der Bedienerseite (außerhalb des Iframes) aufgerufen, sind aber über Befehle aus der Lobby erreichbar.
Mindestanforderungen für die Umsetzung
Autorisierung: short-lived tokens (1-15 min) + transparente Rotation (silent refresh).
Sicherheit: CSP, 'sandbox' und präzise' allow 'für iframe, strenge Filterung' postMessage'.
Stabilität: Ereignisvertrag (Versionen, backward-compat), graceful-fallback bei Fehlern.
UX: adaptives Raster, schnelle Navigation, Vorladen von Karten, Skeleton-Bildschirme.
Analyse: einheitliche Ereignisse (Impression, Click, Launch, Error), Mapping im Amplitude/GA4.
Beispiel Einbettung (HTML + Sicherheit)
html
<iframe id="providerLobby"
src="https://lobby. example. com/embed? brand=ACME&lang=ru¤cy=EUR&token={{SESSION_TOKEN}}"
loading="lazy"
referrerpolicy="strict-origin-when-cross-origin"
sandbox="allow-scripts allow-same-origin allow-popups allow-popups-to-escape-sandbox"
allow="fullscreen; autoplay; encrypted-media; clipboard-read; clipboard-write"
style="width:100%;height:100vh; border:0; display:block; ">
</iframe>
Erläuterungen:
- 'sandbox' - nur die gewünschten Flaggen einschalten. Gib 'allow-top-navigation' nicht unnötig.
- 'allow' - fügen Sie bewusst Fiches hinzu; 'payment' nur, wenn es tatsächlich verwendet wird.
- 'referererpolicy' - Begrenzung von Parameterlecks.
Content-Security-Policy:
default-src 'self';
frame-src https://lobby. example. com;
script-src 'self' https://lobby. example. com 'unsafe-inline';
img-src 'self' https://lobby. example. com data:;
connect-src 'self' https://api. example. com https://lobby. example. com;
Die X-Frame-Optionen für Ihre Seiten stören nicht bei der Einbettung → der Anbieter ist bei Ihnen eingebettet und nicht umgekehrt.
Token-Generierung im Backend (Beispiel Node/Express)
js import jwt from "jsonwebtoken";
import express from "express";
const app = express();
app. get("/lobby-token", (req, res) => {
const payload = {
sub: req. user. id, brand: "ACME", currency: "EUR", lang: "ru", ts: Date. now()
};
const token = jwt. sign(payload, process. env. LOBBY_JWT_SECRET, {
algorithm: "HS256", expiresIn: "10m", issuer: "acme-casino", audience: "lobby-provider"
});
res. json({ token });
});
Best Practices: kurze TTL, Feldaudit, Schlüssel im HSM/Secrets Manager, Rotation 'kid'.
Messaging: Veranstaltungsvertrag
Verwenden Sie' postMessage' mit Whitelisting der Quelle und Validierung des Schemas.
js
//Host (Operator)
const iframe = document. getElementById("providerLobby"). contentWindow;
const LOBBY_ORIGIN = "https://lobby. example. com";
window. addEventListener("message", (e) => {
if (e. origin!== LOBBY_ORIGIN) return;
const { type, payload } = e. data {};
switch (type) {
case "lobby:ready":
//wir senden die Startdaten des iframe. postMessage({ type: "host:context", payload: {
balance: 125. 40, kycStatus: "verified", limits: { betMax: 100 }
}}, LOBBY_ORIGIN);
break;
case "lobby:resize":
document. getElementById("providerLobby"). style. height = payload. height + "px";
break;
case "lobby:openCashier":
openCashier () ;//Ihre break-Funktion;
case "lobby:launchGame":
launchGame(payload. gameId) ;//kann ein neues Fenster/rout break öffnen;
case "lobby:requestTokenRefresh":
refreshLobbyToken(). then(t =>
iframe. postMessage({ type: "host:newToken", payload: { token: t } }, LOBBY_ORIGIN)
);
break;
}
});
Standardereignisse (Beispielsatz):
- От лобби → хосту: `lobby:ready`, `lobby:resize`, `lobby:openCashier`, `lobby:openRG`, `lobby:launchGame`, `lobby:track`, `lobby:requestTokenRefresh`, `lobby:error`.
- Von Host → Lobby: 'host: context' (balance, locale, limits), 'host: newToken', 'host: balanceUpdate', 'host: rgState', 'host: navigation'.
Spielstart aus der Lobby
Zwei Ansätze:1. Innerhalb des gleichen iframe - schneller, aber weniger Kontrolle und schwieriger zu verfolgen.
2. Separate Root/Window - einfachere Metriken, Sie können Ihre Overlays (RG/Limits) aufhängen, bessere Kompatibilität mit Web-View.
Mindestroute:- Die Lobby sendet 'lobby: launchGame {gameId}'.
- Der Host generiert ein 'gameToken' auf seiner Backe und öffnet '/game/: id? token=…`.
- Das Spiel akzeptiert den Token, validiert, die Wettsitzungen beginnen.
UX und Leistung
Α daptiv: 3-5 Spalten auf dem Desktop, 2 - Tablet, 1 - Mobil; Legen Sie die Höhe der Karten fest.
Skeletons und Lazy-Loading (Bilder von 'loading =' lazy', 'fetchpriority =' low''für Galerien).
Schnellsuche und Filter: Merken Sie sich die ausgewählten Tags in'? query '/' localStorage'.
Klicks auf die Karte: Klickzone ≥ 44px; Tastaturunterstützung (A11y).
Banner-Platzhalter: Damit der Leiout nicht „galoppiert“.
iOS-Medienrichtlinie: Video/Audio-Autoplay erfordert eine Benutzergeste; Berücksichtigen Sie dies in den Demo-Videos.
Compliance und Spielerverantwortung (RG)
Limits und Timeouts: Unterstützung für die Anzeige der aktuellen Spielerlimits in der Lobby (nur lesen), Aufruf des Änderungsformulars auf der Hostseite.
Selbstausschluss: Das Ereignis' lobby: openRG 'öffnen → Ihr RG-Modul außerhalb des iframe.
Jur. -Banner und 18 +: auf der Host-Seite und nicht in der Lobby, um nicht von den Kreativen des Anbieters abhängig zu sein.
GDPR/Cookies: Die Lobby ist ein Dritter, denken Sie an den Cookie-Konsens und den rechtlichen Rahmen (vertragliche Notwendigkeit/legitimes Interesse).
Lokalisierung und Branding
Übergeben Sie die Sprache/Währung/Region an 'src' und/oder an' host: context'.
Lassen Sie White-Label-Variablen zu: Farben, Logos, Schriftarten.
Speichern Sie „Favoriten/aktuelle“ Blöcke auf der Seite des Betreibers, damit beim Wechsel des Anbieters keine Daten verloren gehen.
Analytik und Metriken
Tracking-Ebene (Beispiel):- `lobby_impression`, `tile_view`, `tile_click`, `search_use`, `category_change`, `launch_game`, `error_view`.
- TTFB-Bet (Zeit vom Eintritt in die Lobby bis zur ersten Wette), CR_deposit→launch, CTR Kategorien/Suche, Durchschnittliche Betrachtungstiefe.
Ereignisse aus dem iframe aggregieren Sie zu sich selbst; Vermeiden Sie die „doppelte Abrechnung“ mit den Pixeln des Anbieters.
Implementierungstestplan
1. Sicherheit: CSP-Prüfung, keine überflüssigen 'allow' und 'sandbox' Flags, Validierung 'postMessage. origin`.
2. Sitzungen: Token-Ablauf, silent-refresh, Verhalten bei 401/403.
3. Resize: korrekte Höhe auf Mobile/Web View (Android/iOS).
4. Kasse/KUS: Szenarien zum Öffnen/Schließen von Modalocs zu Lobby-Veranstaltungen.
5. Provider-Nichterreichbarkeit: Timeouts, Stub-Show und Retrays.
6. RG Limits: Anzeige und Verbot des Spielstarts bei Sperren.
7. Umschalten von Orten/Währungen: on-the-fly und beim Neustart.
8. Analytik: Zählervergleich Host vs Anbieter.
Typische Fehler (Anti-Muster)
Hängen Sie das' message' -Blatt, ohne' origin 'zu überprüfen.
Geben Sie iframe vollen Zugriff ('allow-same-origin allow-top-navigation-by-user-activation' „nur für den Fall“).
Langlebige Token ohne Rotation.
Verlassen Sie sich auf die Content-Lobby für SEO.
Mischen Sie Spieler-Cache und Anbieter-Verzeichnis-Cache (bricht Personalisierung).
Führen Sie das Spiel innerhalb des gleichen iframe ohne Tracking-Kontrolle und RG-Overlays.
iFrame Lobby Integration Checkliste
- Wir haben einen Veranstaltungsvertrag (Version, Typen, Schemata) vereinbart.
- Implementierte/lobby-token mit TTL ≤ 15 Minuten und Rotation.
- CSP konfiguriert, 'sandbox', 'allow', 'refererrerpolicy'.
- Cashier/KYC/RG verbunden und Ereignisse' openCashier '/' openRG 'verknüpft.
- Gedacht Fallback, wenn der Anbieter degradiert.
- Überprüft Lokalisierung, Währungen, Alter Banner.
- Konfigurierte Analysen (End-to-End User/Session Ids).
- Cross-Browser und mobile Web-View-Tests durchgeführt.
- Beschrieben runbook Vorfälle und Kontaktpunkte mit dem Anbieter.
Die iFrame-Lobby ist eine schnelle und pragmatische Möglichkeit, den Spielekatalog zu erweitern und die Time-to-Market zu verkürzen. Der Schlüssel zu einer gesunden Integration ist strenge Sicherheit, klarer Ereignisvertrag, zuverlässige Autorisierung und durchdachte UX/Analytik auf Betreiberseite. Wenn Sie dies einmal getan haben, können Sie Integrationen mit neuen Anbietern praktisch „per Klick“ skalieren.