tipimplementacija
sto_trebaImplementirati WebSocket real-time sloj za GenesisKanal s Redis pub/sub brokerom
faze{
"P1": "DONE — novi fajl api/kanal_ws.py (Redis pub/sub, auth, presence, filtering)",
"P2": "DONE — kanal.py poruka_posalji poziva objavi_poruku nakon commit-a",
"P3": "DONE — main.py registrira kanal_ws_router (import + include_router)",
"P4": "DONE — kanal.py status endpoint azuriran (P3: DONE)",
"P5": "DONE — nginx /ws/ location dodan s WebSocket upgrade headerima",
"P6": "DONE — test potvrden: dobrodosao + pong rade uzivo"
}
arhitektura{
"redis_kanal": "genesis:kanal:ws:{soba_id}",
"redis_online": "genesis:kanal:online:{soba_id}",
"redis_db": 4,
"multi_server": "EU/NEW/DE transparentno — svi cvorovi subscribiraju isti Redis kanal",
"omotnica_filter": "svaki klijent prima SAMO svoju omotnicu (privatnost E2E)",
"keepalive": "30s timeout -> automatski ping server-side",
"presence": "clan_online broadcast pri spajanju i odspajanju",
"typing": "tipka event bez broadcast sebi",
"receipts": "procitano event s poruka
testovi{
"dobrodosao": "PASS — primljeno naziv_sobe + online_clanovi lista",
"ping_pong": "PASS — server vraca pong na ping",
"auth_los_token": "PASS — FastAPI vraca 404/close(4001) na los token",
"nginx_ws_proxy": "PASS — /ws/ proxiran na 8010 s Upgrade headerima"
}
fajlovi[
"/var/www/genesis/api/kanal_ws.py",
"/var/www/genesis/api/kanal.py",
"/var/www/genesis/main.py",
"/etc/nginx/sites-enabled/genesis-web"
]
zakonc1139