IFrame lobby деген эмне жана аны кантип бириктирүү керек
iFrame lobby деген эмне
iFrame lobby - бул камтылган лобби модулу (оюн каталогу, баннерлер, категориялар, издөө, тез баштоо), ал контент жеткирүүчүдө/агрегатордо жайгаштырылган жана '
Негизги идея: оператор нөлдөн баштап лоббиге жазбайт, бирок даяр, тез убакыт-to-market, кросс-браузер колдоосун жана жаңылоолорду өз тарабында чыгаруусуз туташтырат.
Качан ылайыктуу
Жаңы провайдерди/вертикалды тез ишке киргизүү.
Бир нече өлкөлөр/бренддер үчүн бирдиктүү витрина керек.
Оператордун чектелген фронтенд командасы.
Жакшы жана жаман жактары
Артыкчылыктары: ылдамдык, бирдиктүү коддук база, жаңылык автожүктөө, провайдердин макулдашылган аналитикасы.
Кемчиликтери: пиксел-perfect аз контролдоо, сатуучу аптайм көз карандылык, трекинг, SEO чектөөлөрдү (iframe мазмуну сиздин DOM бир бөлүгү катары индекстелет эмес).
Базалык архитектура
1. Front (оператор): '/casino 'баракчасы'
2. Auth Conta: кыска жашоого 'sessionToken' (JWT/opaque) оператордун бэкенд боюнча түзүлгөн.
3. Provider lobby: Токенди тастыктайт, тилди/валютаны/лимиттерди алмаштырат, оюндарды жана баннерлерди рендерлейт.
4. Messaging шиналар: 'window. postMessage 'беттин ортосунда жана окуялар үчүн iframe (баланс, оюндун башталышы, кассаны ачуу ж.б.).
5. Cashier/KYC/RG: оператор тарабында чакыртылган (iframe тышкары), бирок команда лобби жеткиликтүү.
Киргизүүгө минималдуу талаптар
Авторизация: short-lived токендер (1-15 мин) + тунук ротация (silent refresh).
Коопсуздук: CSP, 'sandbox' жана так 'allow' үчүн iframe, катуу чыпкалоо 'postMessage'.
Туруктуулук: иш-чаралардын келишими (Version, backward-compat), ката graceful-fallback.
UX: адаптивдик тор, тез навигация, карталарды жүктөө, скелетон экрандары.
Аналитика: бирдиктүү окуялар (impression, click, launch, error), Amplitude/GA4.
Мисал киргизүү (HTML + коопсуздук)
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>
Түшүндүрмөлөр:
- 'sandbox' - керектүү желектерди гана күйгүзүңүз. кереги жок 'allow-top-navigation' бербе.
- 'allow' - атайылап чип кошуу; 'payment' эгер чындап колдонулса гана.
- 'referrerpolicy' - параметрлердин агып чыгуусун чектөө.
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;
Сиздин барактар үчүн X-Frame-Options Сиз коюуга тоскоолдук кылбайт → провайдер сага орнотулган, тескерисинче эмес.
Артындагы токенди түзүү (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 });
});
Мыкты тажрыйбалар: кыска TTL, талаа аудит, HSM/Secrets Manager ачкычтары, айлануу 'kid'.
Билдирүү алмашуу: иш-чаралардын келишими
Булак whitelisting жана схеманы валидациялоо менен 'postMessage' колдонуңуз.
js
//Хост (оператор)
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":
//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 () ;//сиздин break функциясы;
case "lobby:launchGame":
launchGame(payload. gameId) ;//жаңы терезе/роут break ача алат;
case "lobby:requestTokenRefresh":
refreshLobbyToken(). then(t =>
iframe. postMessage({ type: "host:newToken", payload: { token: t } }, LOBBY_ORIGIN)
);
break;
}
});
Стандарттык окуялар (топтомдун мисалы):
- От лобби → хосту: `lobby:ready`, `lobby:resize`, `lobby:openCashier`, `lobby:openRG`, `lobby:launchGame`, `lobby:track`, `lobby:requestTokenRefresh`, `lobby:error`.
- Хосттон → лобби: 'host: context' (баланс, жергиликтүү, лимиттер), 'host: newToken', 'host: balanceUpdate', 'host: rgState', 'host: navigation'.
Оюнду лоббиден ишке киргизүү
Эки ыкма:1. Ичинде ошол эле iframe - тезирээк, бирок аз контролдоо жана татаал трекинг.
2. Өзүнчө рут/терезе - жөнөкөй метрика, Сиз overley илип алат (RG/лимиттери), жакшы Web-Vew менен шайкештиги.
Минималдуу каттам:- Лобби жөнөтөт 'lobby: launchGame {gameId}'.
- Хост өзүнүн бэк 'gameToken' түзөт жана ачат '/game/: id? token=…`.
- Оюн токенди кабыл алат, тастыктайт, коюмдардын сессиялары башталат.
UX жана аткаруу
Α даптив: 3-5 колонка, 2 - планшет, 1 - мобилдик; картанын бийиктигин жазыңыз.
Скелеттер жана lazy-loading (сүрөттөр 'loading =' lazy '', 'fetchpriority =' low '' галереялар үчүн).
Fast Search & Filters: '? query '/' localStorage' деп тандалган теги эстеп.
Click Card: Click зонасы ≥ 44px; клавиатура колдоо (A11y).
Баннерлердин плейсхолдерлери: Лэйаут "секирип" кетпеши үчүн.
iOS медиа саясаты: Video/аудио autoplay колдонуучунун ишаратын талап кылат; муну демо-роликтерде эске алыңыз.
Комплаенс жана оюнчу жоопкерчилиги (RG)
Лимиттер жана таймауттар: учурдагы оюнчунун лимиттерин лоббиде көрсөтүүнү колдоо (read-only), хост тарабында өзгөртүү формасын чакыруу.
Өзүн-өзү четтетүү: окуя 'lobby: openRG' → iframe тышкары сиздин RG модулун ачуу.
Кар. -баннерлер жана 18 +: провайдердин чыгармачылыгына көз каранды болбоо үчүн лоббинин ичинде эмес, хост тарабында.
GDPR/cookie: лобби - үчүнчү тарап, ойлонуп cookie-consent жана укуктук база (contractual necessity/legitimate interest).
Локализация жана брендинг
Тилди/валютаны/аймакты 'src' жана/же 'host: context' деп которуңуз.
White-label өзгөрмөлүү жол: түстөр, логотип, ариптер.
"Тандалган/акыркы" блоктору сатуучуну алмаштырууда маалыматтарды жоготпоо үчүн оператор тарапта сакталат.
Аналитика жана метрика
Tracking катмары (мисал):- `lobby_impression`, `tile_view`, `tile_click`, `search_use`, `category_change`, `launch_game`, `error_view`.
- TTFB-Bet (биринчи коюм үчүн лоббиге кирүүдөн убакыт), CR_deposit→launch, CTR категориялары/издөө, Орточо көрүү тереңдиги.
iframe окуяларды чогултуу; провайдердин пикселдери менен "кош эсептен" качыңыз.
Ишке ашыруунун тест-планы
1. Коопсуздук: CSP текшерүү, ашыкча 'allow' жана 'sandbox' желектери жок, валидация 'postMessage. origin`.
2. Сессиялар: Токендин мөөнөтү, silent-refresh, 401/403 жүрүм-туруму.
3. Резиз: мобилдик/веб-view боюнча туура бийиктик (Android/iOS).
4. Касса/CUS: лобби окуялары боюнча модалктарды ачуу/жабуу сценарийлери.
5. Провайдердин жеткиликсиздиги: тайм-ауттар, өчүрүү жана ретра көрсөтүү.
6. RG чеги: көрсөтүү жана бөгөт коюу учурунда оюнду баштоого тыюу салуу.
7. Жергиликтүү/валюталарды которуу: учууда жана кайра жүктөөдө.
8. Аналитика: эсептегичтерди салыштыруу хост vs сатуучу.
Типтүү каталар (анти-үлгүлөрү)
'origin' текшерүүсүз 'message' -листенерди илип коюу.
iframe толук жеткиликтүүлүгүн берүү ('allow-same-origin allow-top-navigation-by-user-activation' "кандай болгон күндө да").
Rotation жок узак мөөнөттүү токендер.
SEO үчүн лобби мазмунуна таянуу.
Ойноткучтун кэшин жана провайдердин каталогунун кэшин аралаштыруу (жекелештирүүнү бузат).
Tracking жана RG-Overlay көзөмөлсүз ошол эле iframe ичинде оюнду баштоо.
iFrame lobby интеграция чек тизмеси
- Иш-чаралардын келишими жөнүндө макулдашты (версия, түрлөрү, схемалар).
- TTL ≤ 15 мүнөт жана айлануу менен/lobby-token ишке ашырылган.
- орнотулган CSP, 'sandbox', 'allow', 'referrerpolicy'.
- Cashier/KYC/RG байланышып, 'openCashier '/' openRG' окуяларын байланыштырды.
- Провайдердин деградациясында fallback ойлонуп.
- Биз локализацияны, валюталарды, курактык баннерлерди салыштырдык.
- орнотулган аналитика (аркылуу user/session ids).
- Биз кросс-браузер жана мобилдик Web-view тесттер жүргүзүлгөн.
- Runbook окуялар жана сатуучу менен байланыш пункттарын сүрөттөлгөн.
iFrame-лобби - оюн каталогун кеңейтүү жана убакыт-базар кыскартуу үчүн тез жана прагматикалык жолу. Дени сак интеграциянын ачкычы - катуу коопсуздук, окуялардын так келишими, ишенимдүү авторизация жана оператор тарапта ойлонулган UX/аналитика. Муну бир жолу жасоо менен сиз дээрлик "чыкылдатуу менен" жаңы жеткирүүчүлөр менен интеграцияны масштабдай аласыз.