Co to jest lobby iFrame i jak go zintegrować
Co to jest lobby iFrame
Lobby iFrame to wbudowany moduł lobby (katalog gier, banerów, kategorii, wyszukiwania, szybkiego startu), który jest hostowany przez dostawcę treści/agregatora i wyświetlany wewnątrz strony operatora za pomocą '
Kluczowy pomysł: operator nie pisze lobby od podstaw, ale łączy gotowy, otrzymując szybki czas na rynek, obsługę przeglądarki krzyżowej i aktualizacje bez zwolnień po jego stronie.
W stosownych przypadkach
Szybkie uruchomienie nowego dostawcy/pionowego.
Potrzebujesz jednolitej prezentacji dla wielu krajów/marek.
Ograniczone dowództwo frontu nad operatorem.
Plusy i minusy
Plusy: prędkość, pojedyncza baza kodowa, automatyczne ładowanie nowych produktów, uzgodniona analityka dostawców.
Minusy: mniejsza kontrola nad pikselem-perfect, zależność od uptime sprzedawcy, śledzenie subtelności, ograniczenia SEO (zawartość w iframe nie jest indeksowana jako część DOM).
Podstawowa architektura
1. Front (operator): strona '/casino 'z gniazdami, do których'
2. Uszczelka auth: krótkotrwały 'Token' (JWT/opaque) jest generowany na plecach operatora.
3. Lobby dostawcy: zatwierdza token, zastępuje język/walutę/limity, renderer gier i banery.
4. Komunikator autobusowy: 'okno. Wiadomość pocztowa "między stroną a iframe dla wydarzeń (saldo, start gry, otwarta kasa itp.).
5. Kasjer/KYC/RG: wywołany po stronie operatora (poza iframe), ale dostępny z poleceń lobby.
Minimalne wymogi wykonawcze
Autoryzacja: żetony krótkotrwałe (1-15 minut) + przezroczysty obrót (cichy odśwież).
Bezpieczeństwo: CSP, 'piaskownica' i dokładne 'pozwalają' na filtrowanie iframe, ścisłe 'postMessage'.
Stabilność: kontrakt na zdarzenia (wersje, wsteczny kompat), wdzięczny upadek w przypadku błędów.
UX: siatka adaptacyjna, szybka nawigacja, wstępne obciążenie karty, ekrany szkieletowe.
Analityka: ujednolicone zdarzenia (wrażenie, kliknij, uruchom, błąd), mapowanie w Amplitude/GA4.
Przykład osadzania (bezpieczeństwo HTML +)
html
<iframe id = „ Lobby”
src = "https ://lobby. przykład. com/embed? marka = ACME & lang = ru & waluta = EUR & token = {{SESJA _ TOKEN}"
załadunek =” leniwy”
referrerpolicy =” ścisłe pochodzenie-kiedy-krzyżowe”
sandbox =” allow-scripts allow-same-origin allow-popups allow-popups-to-escape-piaskbox”
allow = "pełny ekran; autoplay; zaszyfrowane nośniki; czytanie schowka; schowek-zapisz"
styl = "szerokość: 100%; wysokość: 100vh; granica: 0; wyświetlacz: blok; ">
</iframe>
Wyjaśnienia:
- 'piaskownica' -Możliwe tylko flagi chcesz. Nie dawaj 'allow-top-nawigacji' niepotrzebnie.
- "allow" - dodać funkcje świadomie; " płatność "w przypadku rzeczywistego wykorzystania.
- „referrerpolica” - dopuszczalne wycieki parametrów.
Treść-Polityka bezpieczeństwa:
domyślnie src „self”;
frame-src https ://lobby. przykład. com;
script-src 'self' https ://lobby. przykład. com „niebezpieczny inline”;
img-src 'self' https ://lobby. przykład. dane com:;
connect-src 'self' https ://api. przykład. com https ://lobby. przykład. com;
X-Frame-Options dla Twoich stron nie przeszkadza w osadzaniu Cię → dostawca jest osadzony z Tobą, a nie odwrotnie.
Generowanie tokena na plecach (przykład Node/Express)
js import jwt z „jsonwebtoken”;
ekspres do przywozu z „express”;
const app = express ();
app. get („/lobby-token ”, (req, res) => {
const loyload = {
sub: req. użytkownik. id, marka: „ACME”, waluta: „EUR”, lang: „ru”, ts: Date. teraz ()
};
const token = jwt. znak (ładunek, proces. Wi-fi LOBBY_JWT_SECRET, {{
algorytm: „HS256,” expiresIn: „10m”, emitent: „acme-casino”, publiczność: „lobby-provider”
});
res. json ({token});
});
Najlepsze praktyki: krótki TTL, pola audytu, klucze w HSM/Secrets Manager, rotacja 'kid'.
Komunikat o umowie zdarzenia
Użyj 'postMessage' z whitelistingiem źródłowym i walidacją schematu.
js
//Host (operator)
const iframe = dokument. blackElementById („ Lobby”). Okno;
const LOBBY_ORIGIN = "https ://lobby. przykład. com";
okno. addΑ Listener („komunikat”, e) => {
jeśli (e. pochodzenie! = = LOBBY_ORIGIN) powrót;
const {typ, ładunek użytkowy} = e. dane {};
przełącznik (typ) {
sprawa „lobby: gotowe”:
//wyślij dane początkowe iframe. Wiadomość pocztowa ({typ: „host: context”, ładunek użytkowy: {
saldo: 125. 40, kycStatus: „zweryfikowany”, limity: {betMax: 100}
}}}, LOBBY_ORIGIN);
przerwa;
przypadek „lobby: rozmiar”:
dokument. blackElementById („ Lobby”). styl. wysokość = ładunek użytkowy. wysokość + „px”;
przerwa;
sprawa „lobby: openCashier”:
openCashier () ;//funkcja przerwy;
sprawa „lobby: launchGame”:
launchGame (ładunek użytkowy. gameId) ;//można otworzyć nowe okno/otworu break;
sprawa „lobby: TokenRefresh”:
refreshLobbyToken (). następnie (t =>
iframe. Wiadomość pocztowa ({typ: „host: newToken”, ładunek użytkowy: {token: t}}, LOBBY_ORIGIN)
);
przerwa;
}
});
Zdarzenia standardowe (przykładowe):
- Овлова → боста: 'lobby: ready', 'lobby: resize', 'lobby: openCashier', 'lobby: openRG', 'lobby: launchGame', 'lobby: track', 'lobby: TokenRefresh', 'lobby: error'.
- Od hosta → lobby: 'host: context' (saldo, lokalizacja, limity), 'host: newToken', 'host:' Update ',' host: rgState ',' host: navigation '.
Uruchomienie gry z holu
Dwa podejścia:1. Wewnątrz tego samego iframe - szybciej, ale mniej kontroli i trudniejsze śledzenie.
2. Oddzielny korzeń/okno - prostsze mierniki, można powiesić nakładki (RG/limit), lepsza kompatybilność z widokiem sieci.
Minimalna trasa:- Lobby wysyła 'lobby: launchGame {gameId}'.
- Host generuje 'gameToken' na plecach i otwiera '/gra/: id? token =... ".
- Gra akceptuje token, waliduje, rozpoczyna sesje zakładów.
UX i wydajność
Α touch: 3-5 głośników na pulpicie, 2 - tablet, 1 - mobilny; naprawić wysokość kart.
Szkielety i leniwe obciążenie (obrazy „załadunek =” leniwy „,” fetchpriority = „niski” dla galerii).
Szybkie wyszukiwanie i filtrowanie - pamiętasz wybrane znaczniki w '? zapytanie '/' Storage '.
Kliknięcia na karcie: kliknij strefę ≥ 44px; wsparcie klawiatury (A11y).
Znaczniki banerów: tak, że układ nie „skakać”.
Polityka mediów iOS: autoplay video/audio wymaga gestu użytkownika; Rozważmy to w demo.
Zgodność i odpowiedzialność gracza (RG)
Limity i terminy: obsługa wyświetlania aktualnych limitów gracza w holu (tylko do odczytu), wywoływanie formularza zmiany po stronie hosta.
Self-exclusion: event 'lobby: openRG' → otwórz moduł RG poza iframe.
Yur. -banners i 18 +: po stronie hosta, a nie wewnątrz holu, aby nie zależeć od kreatywności dostawcy.
RODO/pliki cookie: lobby - strona trzecia, myśl o zgodzie na cookie i ramach prawnych (konieczność umowna/uzasadniony interes).
Lokalizacja i markowanie
Podaj język/walutę/region do 'src' lub' host: context '.
Zezwalaj na zmienne białej etykiety: kolory, logo, czcionki.
Zachowaj „ulubione/najnowsze” bloki po stronie operatora, aby nie tracić danych podczas zmiany sprzedawcy.
Analityka i metryka
Warstwa śledzenia (przykład):- 'lobby _ impression', 'tile _ view', 'tile _ click', 'search _ use', 'category _ change', 'launch _ game', 'error _ view'.
- TTFB-Bet (czas od wejścia do holu do pierwszego zakładu), CR_deposit→launch, kategorie/wyszukiwanie CTR, średnia głębokość oglądania.
zagregowane zdarzenia z iframe; unikać „podwójnego liczenia” z dostawcą pikseli.
Plan testów wdrożeniowych
1. Bezpieczeństwo: sprawdzanie CSP, brak dodatkowych flag 'permit' i 'sandbox', walidacja 'postMessage'. pochodzenie ".
2. Sesje: wygaśnięcie tokenu, cichy odświeżanie, zachowanie na 401/403.
3. Rozmiar: prawidłowa wysokość na widoku mobilnym/internetowym (Android/iOS).
4. Cash desk/CCM: scenariusze otwierania/zamykania modali za pomocą imprez lobby.
5. Dostawca niedostępność: timeouts, wyświetlanie stub i retray.
6. Limity RG: Wyświetla i uniemożliwia rozpoczęcie gry na blokadach.
7. Przełączanie lokalizacji/walut: w locie i przy ponownym uruchomieniu.
8. Analityka: porównanie liczników host vs vendor.
Częste błędy (anty-wzorce)
Powiesić słuchacza 'wiadomości' bez sprawdzania 'origin'.
Wydanie iframe pełnego dostępu ('permit-same-origin allow-top-navigation-by-user-activation' „just in case”).
Długotrwałe żetony bez rotacji.
Polegaj na treści lobby dla SEO.
Mix cache odtwarzacza i cache katalogu dostawcy (breaks personalization).
Uruchom grę w tym samym iframe bez kontroli śledzenia i nakładek RG.
Lista kontrolna integracji lobby iFrame
- Umowa dotycząca uzgodnionych zdarzeń (wersja, rodzaje, schematy).
- Wdrożony/lobby-token z TTL ≤ 15 minut i obrót.
- Skonfigurowany CSP, 'piaskownica', 'permit', 'referrerpolicy'.
- Połączona kasa/KYC/RG i powiązane zdarzenia 'openCashier '/' openRG'.
- Przemyślane awaryjny gdy dostawca degraduje.
- Sprawdzona lokalizacja, waluty, banery wiekowe.
- Skonfiguruj analitykę (użytkownik końcowy/ids sesji).
- Przeprowadzone testy przeglądarki krzyżowej i przeglądarki mobilnej.
- Opisano rysopis incydentów i punktów kontaktowych ze sprzedawcą.
Lobby iFrame to szybki i pragmatyczny sposób na rozszerzenie katalogu gier i skrócenie czasu na rynek. Kluczem do zdrowej integracji jest silne bezpieczeństwo, wyraźny kontrakt na imprezy, silna autoryzacja i przemyślane UX/analityka po stronie operatora. Robiąc to pewnego dnia, można skalować integracje z nowymi dostawcami prawie „na kliknięciu”.