GH GambleHub

Ҷараёнҳо ва рӯйдодҳои Web-Socket

TL; ДР

Ҷараёни корӣ = канали боэътимод (WSS) + ҷуброни ҷамъбастшуда + рӯйдодҳои номатлуб + маҳдудиятҳои қатъӣ ва пуштибонӣ. Иҷро кунед: Аутентификатсияи JWT, иҷозат барои мавзӯъҳо, набзи дил, seq/offset + resume-token, ҳадди аққал як маротиба + марг. Барои миқёс - sharding корбар/иҷорагир, масири часпанда ва навбат (Kafka/NATS/Redis Streams) ҳамчун манбаи ҳақиқат.

1) Парвандаҳои тиҷорати IGaming (он чизе ки мо воқеан ҷараён медиҳем)

Тавозун/маҳдудиятҳо: тағироти фаврӣ дар тавозун, маҳдудиятҳои RG, қуфлҳо.
Гаравҳо/давраҳо/натиҷаҳо: тасдиқ, мақом, ҳисобкунии бурдҳо.
Мусобиқаҳо/пешсафон: вазифаҳо, таймерҳо, чорабиниҳои мукофотӣ.
Пардохтҳо: ҳолати пардохт/баргардонидан, парчамҳои KYC/AML - ба монанди огоҳиҳо (ва танқид дар REST + webhooks боқӣ мемонад).
Чорабиниҳои хидматӣ: паёмҳои чат, баннерҳои пахшкунӣ, вазъи сессия, нигоҳдорӣ.

2) Протокол ва пайвастшавӣ

Танҳо WSS (TLS 1). 2+/1. 3). Ҳадди аксар 1 пайвасти фаъол барои як дастгоҳ/сессияи пешфарз.
Ping/Pong: мизоҷ 'ping' every 20-30 сония, вақти посух 10 сония мефиристад. Сервер пайвастшавиро дар 3 вақти пайдарпай қатъ мекунад.
Фишурдасозӣ: 'permessage-deflate', маҳдудияти андозаи чорчӯба (масалан, ≤ 64 КБ).
Формати борбардорӣ: JSON барои берунӣ, Protobuf/Msgpack барои дохилӣ/мобилӣ.

3) Аутентификатсия ва авторизатсия

Дастфурӯшии JWT дар дархост/сарлавҳа ('Sec-Web- Socket-Protocol '/' Авторизатсия'), TTL аломати кӯтоҳ (≤ 15 дақиқа), тароват аз ҷониби банд (REST).
Талаботи иҷорагир: 'sub', 'иҷорагир', 'миқёс', 'risk _ flags'.
ACL ба мавзӯъҳо/каналҳо: обуна танҳо ба "мавзӯъҳо" иҷозат дода мешавад (масалан: 'корбар: {id}', 'мусобиқа: {id}', 'бозӣ: {table}').
Азнавбарқароркунии пайвастшавӣ ҳангоми ба охир расидани мӯҳлат: "равзанаи нарм" 60 с.

4) Модели обуна

Мизоҷ фармонҳоро пас аз пайвастшавӣ мефиристад:
json
{ "op":"subscribe", "topics":["user:123", "tournament:456"], "resume_from":"1748852201:987654" }
{ "op":"unsubscribe", "topics":["tournament:456"] }

'resume _ from' - ҷуброн (ниг. § 5), агар муштарӣ дубора пайваст шавад.
Сервер бо ack/nack ҷавоб медиҳад, ACL-ҳои ноком дар 'reason' мебошанд.

5) Кафолат ва хулосаи таҳвил

Мақсад: ҳадди аққал як маротиба дар як канал + idempotency дар муштарӣ.

Ҳар як чорабинӣ дорои "seq 'within" якранг аст (одатан корбар/ҳуҷра) ва глобалии' event _ id 'for deduplication.
Бо пайвасти дубора, муштарӣ 'resume _ from' = охирин тасдиқшудаи 'seq' (ё 'offset' of брокер) мефиристад. Сервер рӯйдодҳои пазмоншударо аз "манбаи ҳақиқат" (Kafka/NATS/Redis Streams) бор мекунад.
Агар ақибмонӣ аз нигоҳдорӣ зиёдтар бошад (масалан, 24 соат), сервер 'лаҳзаи' ҳолат ва 'seq' -и навро мефиристад.

Семантикаи мизоҷ:
  • Store 'last _ seq '/' event _ id' in нигаҳдории пойдор (Indexed 'DB/Keychain).
  • Аз рӯи 'event _ id' ҷудо кунед, ҳодисаҳоро бо 'seq ≤ last_seq' гузаред, сӯрохиҳо (холигоҳ) → дархости фаврии auto-' resync' -ро муайян кунед.

6) Нақшаи иттилоот (лифофа)

json
{
"ts": "2025-11-03T12:34:56. 789Z",
"topic": "user:123",
"seq": "1748852201:987654",   // partition:offset
"event_id": "01HF..",      // UUID/KSUID
"type": "balance. updated",
"data": { "currency":"EUR", "delta"--5. 00, "balance":125. 37 },
"trace_id": "4e3f.., "//for correlation
"signature": "base64 (hmac (...)) "//optional for partners
}

'type' - таксономияи домейн (ба луғати ҳодисаҳо нигаред).
PII/PCI - истисно/ниқоб дар сатҳи дарвоза.

7) Бозгашт, квотаҳо ва муҳофизат аз муштариёни "гарон"

Сервер → Мизоҷ: навбат барои пайвастшавӣ бо равзанаи слайд. Обунаҳои пурра - барқароркунӣ ба мавзӯъҳои "ғалоғула" ё ҷудо кардан бо рамзи '1013 '/' policy _ verience'.
Муштарӣ → Сервер: маҳдудиятҳо дар 'subscribe/unsubscribe' (масалан, ≤ 10/sec), маҳдудияти рӯйхати мавзӯъҳо (≤ 50), фосилаи ҳадди ақали дубораи дубора.
Меъёри меъёри IP/иҷорагир/калид. Аномалияҳо → бастани муваққатӣ.
Афзалият: рӯйдодҳои ҳаётан муҳим (тавозун, маҳдудиятҳои RG) - навбати афзалиятнок.

8) Муҳофизат ва бехатарӣ

Профили WAF/бот дар нуқтаи ниҳоӣ, Рӯйхати иҷозат дода шудааст.
MTLS байни дарвозаи канорӣ ва гиреҳҳои ҷараён.
Муҳофизати ДО: кукиҳои SYN дар L4, маҳдудияти шумораи фосилаи кушодаи WS/нигоҳдории зинда.
Анти-такрорӣ: 'timestamp' дар имзои ихтиёрии сарборӣ (барои шарикон) бо равзанаи дурусти 5 дақиқа.
Ҷудокунии иҷорагир: якбора ҷисмонӣ/мантиқӣ, калидҳо/нишонаҳо барои як иҷорагир.

9) Меъмории нақлиёт

Дарвоза (канор): терминали TLS, authn/Z, квотаҳо, масир барои як ҳизб.
Гиреҳҳои ҷараён: коргарони бешаҳрвандӣ бо масири часпанда аз ҷониби 'hash (user_id)% N'.
Брокери чорабинӣ: Kafka/NATS/Redis Streams - манбаи ҳақиқат ва буфери такрорӣ.
Хадамоти давлатӣ: лаҳзаҳоро нигоҳ медорад (тавозун, мавқеъ дар мусобиқа).
Бисёр минтақаҳо: дороиҳо; GSLB аз рӯи минтақаи наздиктарин; хона-минтақа ҳангоми воридшавӣ муқаррар карда мешавад; бо фейер - хулосаи "хунук" аз минтақаи дигар.

10) Тартиб, пайдарҳамӣ, idempotency

Фармоиш дар дохили ҳизб (корбар/ҳуҷра) кафолат дода мешавад, на дар саросари ҷаҳон.
Мувофиқат: ҳодиса метавонад пеш аз вокуниши REST ба амал ояд; UX бояд бо ҳолати фосилавӣ зиндагӣ кунад (оштии оптимистии UI +).
Idempotence: коркарди 'event _ id' ҳолати муштариро тағйир намедиҳад.

11) Хатогиҳо, пайвастшавӣ ва тӯфонҳо

Рамзҳои пӯшида: '1000' (муқаррарӣ), '1008' (сиёсат), '1011' (дохилӣ), '1013' (изофабори сервер).
Бозгашти экспоненсиалии муштарӣ + jitter: 1s, 2s, 4s... максимум 30-сола.
Ҳангоми пайвасткунии оммавӣ ("галаи раъд") - сервер посухҳои "retry _ after" ва "хокистарӣ" -ро бо дархости истифодаи SSE барои танҳо хондан медиҳад.

12) Пули нақд ва лаҳзаҳо

Ҳар як обуна метавонад бо лаҳзаи ҳолати ҷорӣ, пас ҷараёни рӯйдодҳои диффӣ оғоз ёбад.
Версия ва мутобиқати схемаи Data _ version (васеъкунии майдон муштариёнро вайрон намекунад).

13) Мушоҳида ва SLO

Нишондиҳандаҳо:
  • Пайвастшавӣ: фаъол, муқарраршуда/сек, тақсимот аз ҷониби иҷорагир/минтақа.
  • Таҳвил: таъхири p50/p95 аз брокер ба муштарӣ, тарки тарки, меъёри дубора.
  • Эътимоднокӣ: ҳиссаи резюмеи бомуваффақият бидуни сурат, детектори холигӣ.
  • Хатогиҳо: 4xx/5xx дар дасти дастӣ, рамзҳои пӯшида, хитҳо маҳдуд.
  • Сарборӣ: RPS фармонҳои 'обуна', андозаи навбат, CPU/NET.
Меъёрҳои SLO:
  • Таъсиси WS p95 ≤ 500 ms (дар дохили минтақа).
  • Ҳодисаи ниҳонии ниҳоӣ p95 ≤ 300 ms (қисмати корбар).
  • Муваффақиятро ≥ 99%, аз даст додани паём = 0 (ҳадди аққал як бор) дубора барқарор кунед.
  • Нуқтаи болоии ҷараён ≥ 99. 95%.

14) Идоракунии схема ва версия

Луғати рӯйдодҳо бо соҳибон, намунаҳо ва семантика.
Таҳаввулоти "мулоим": танҳо илова кардани майдонҳои ихтиёрӣ; несткунӣ - пас аз давраи '@ deprecated'.
Санҷишҳои шартномавӣ бар зидди муштарии SDK, линтерҳо дар JSON Schema/Protobuf.

15) Китобҳои бозикунии ҳодисаҳо (дар дафтарчаи муштараки шумо дохил карда мешаванд)

Афзоиши таъхир: гузариш ба гиреҳҳои эҳтиётӣ, зиёд кардани андозаи партия дар брокер, афзалияти рӯйдодҳои ҳаётан муҳимро фароҳам меорад.
Аз нав пайваст кардани тӯфон: фаъол кардани 'retry _ after', муваққатан баланд бардоштани маҳдудиятҳои дастӣ, имкон медиҳад, ки SSE афтад.
Ихроҷи токен: гардиши JWKS, бекор кардани нишонаҳои зарардида, маҷбуран бо дубора пайваст шудан.
Аз даст додани ҳизби брокер: гузариш ба ҳолати фаврӣ, дубора пас аз барқароршавӣ.

16) Мушаххасоти мини API (соддакардашуда)

Дасти дастӣ (HTTP GET → WS):

GET /ws? tenant=acme&client=web
Headers:
Authorization: Bearer <JWT>
X-Trace-Id: <uuid>
Фармонҳои мизоҷ:
json
{ "op":"subscribe",  "topics":["user:123"], "resume_from":"1748852201:42" }
{ "op":"unsubscribe", "topics":["user:123"] }
{ "op":"ping", "ts":"2025-11-03T12:34:56Z" }
Ҷавобҳои сервер:
json
{ "op":"ack", "id":"subscribe:user:123" }
{ "op":"event", "topic":"user:123", "seq":"1748852201:43", "type":"balance. updated", "data":{...} }
{ "op":"snapshot", "topic":"user:123", "seq":"1748852201:42", "state":{...} }
{ "op":"error", "code":"acl_denied", "reason":"no access to topic tournament:456" }
{ "op":"pong", "ts":"..." }

17) Рӯйхати назоратии UAT

  • Хулоса аз ҷуброн пас аз 1/10/60 дақиқаи вақти кории муштарӣ.
  • Dedup: азнавбарқароркунии ҳамон 'event _ id' вазъро тағир намедиҳад.
  • Детектори Gap → автоматии "сурат" ва ҳаммарказ.
  • Квотаҳо ва ақибнишинӣ: муштарии пурбор пайвастагии сиёсиро мегирад.
  • Мултимедия: минтақаи ноком ҳангоми нигоҳ доштани ҷуброн.
  • Амният: Рокери токен аз ҷониби JWT ба итмом расида, кӯшиш мекунад, ки берун аз ACL обуна шавад.

Тавозуни RG/ҳодиса пеш аз REST/пас аз REST - UI дуруст "дӯзандагӣ" меояд.

18) Хатогиҳои зуд-зуд

Не 'seq/offset' ва навсозӣ - гум кардани рӯйдодҳо ва эътимод.
Омезиши фармонҳои интиқодӣ дар мутатсияҳои WS - REST-ро истифода баред.
Набудани бозгашт/квотаҳо - пайвастагиҳои "боздошташуда" ва тармаи хотира.
Тартиби глобалӣ гарон ва нолозим аст; тартиботи кофӣ дар ҳизб.
Сабти PII дар рӯйдодҳо - вайронкунии дахолатнопазирӣ ва PCI/GDPR.
Набудани луғати рӯйдодҳо ва версия - мизоҷон вайрон мешаванд.

Хулоса

Ҷараёнҳои Web-Socket UX-и реактивӣ ва сигналҳои амалиётиро медиҳанд, агар онҳо ҳамчун канали ҷамъбастшуда, ҳифзшуда ва маҳдуд сохта шаванд: WSS + M TLS/JWT, ACL дар мавзӯъҳо, seq/offset + resume, ҳадди аққал як маротиба бо такроркунӣ, бозгашт/квотаҳо, брокер ҳамчун манбаи ҳақиқат, мушоҳида ва SLO. Ҳамин тавр, ҷараёнҳо барои корбар зуд боқӣ мемонанд ва барои платформа идора карда мешаванд - бидуни созиш дар бораи амният ва пул.

Contact

Тамос гиред

Барои саволҳо е дастгирӣ ба мо муроҷиат кунед.Мо ҳамеша омодаем!

Оғози интегратсия

Email — муҳим аст. Telegram е WhatsApp — ихтиерӣ.

Номи шумо ихтиерӣ
Email ихтиерӣ
Мавзӯъ ихтиерӣ
Паем ихтиерӣ
Telegram ихтиерӣ
@
Агар Telegram нависед — ҷавобро ҳамон ҷо низ мегиред.
WhatsApp ихтиерӣ
Формат: рамзи кишвар + рақам (масалан, +992XXXXXXXXX).

Бо фиристодани форма шумо ба коркарди маълумот розӣ ҳастед.