Pornește cronometrul live al meciului
Ecranul de meci live transformă o partidă programată într-un joc în desfășurare: un ceas pe care îl pornești la lovitura de start, îl oprești la pauză și îl reiei pentru repriza a doua, în timp ce golurile, cartonașele și schimbările sunt înregistrate raportat la timpul scurs. În 4league, serverul ține ceasul — timpul pe care îl vezi este citit din backend, nu de pe telefonul tău — astfel încât același meci arată identic pe orice dispozitiv. Acest ghid acoperă cine poate gestiona cronometrul, cum îl pornești, îl oprești și îl reiei și ce se întâmplă când închei meciul.
Ecranul de meci live nu este doar pentru mobil. Poți gestiona cronometrul și înregistra evenimente de pe iOS, Android și din aplicația web 4league. Singurul loc unde web-ul diferă este unde te trimite după ce închei — vezi După ce închei.
Cine poate gestiona cronometrul
Gestionarea cronometrului live este protejată de aceeași regulă care apără orice altă acțiune de meci — userCanManageMatch în backend (middleware/ownership.js), aplicată pe startMatch, logMatchTime și endMatch. Trei categorii de utilizatori au acces:
| Cine | Condiție |
|---|---|
| Organizator / co-organizator | Un administrator sau proprietar al competiției poate gestiona oricând meciul live. |
| Arbitrul desemnat | Un arbitru desemnat la acel meci — o intrare în lista referees a meciului, legată de utilizator — îl poate gestiona. |
| Managerul unei echipe care joacă | Doar când competiția are managersCanAddScore activat. Cu acesta pornit, un manager al oricăreia dintre echipele care joacă poate gestiona meciul live. |
Oricine din afara acestor trei roluri este blocat: controalele nu apar, iar backend-ul respinge cererea cu noRights. Este aceeași regulă folosită pentru introducerea unui scor final.
Pornește ceasul meciului
Din meciul programat, deschide ecranul de meci live și pornește ceasul când echipele dau lovitura de start.
Deschide ecranul de meci live
Din programul competiției, deschide meciul și intră în modul live. Înainte de ora programată a meciului vei vedea un mesaj „meciul nu a început încă” și un cronometru cu numărătoare inversă.
Așteaptă apropierea loviturii de start
Butonul Start rămâne dezactivat până când se atinge ora programată a loviturii de start. Nu poți porni un meci mai devreme — asta păstrează corect timpul de joc înregistrat.
Apasă Start
Apasă Start. Aplicația apelează GET /competition/startMatch/:matchId; backend-ul marchează meciul inProgress, scrie prima intrare LiveScoreTime și trimite o notificare „meciul a început” tuturor celor care urmăresc competiția. Ceasul începe să curgă.
Pauză & reluare
Ceasul în mișcare are un control Stop și, odată pus pe pauză, unul de Reluare. Folosește Stop la pauza dintre reprize și Reluare pentru repriza a doua.
| Acțiune | Ce trimite |
|---|---|
| Stop / pauză | GET /competition/logMatchTime/:matchId/:time/1 — un eveniment de timp cu indicatorul stop setat. Ceasul îngheață. |
| Reluare | GET /competition/logMatchTime/:matchId/:time — un eveniment de timp fără indicatorul de stop. Ceasul continuă de unde l-a lăsat serverul. |
Fiecare pauză și reluare este un rând în cronologia LiveScoreTime a meciului. Backend-ul adună intervalele dintre marcajele de reluare și cele de oprire pentru a ști exact cât timp s-a jucat efectiv — nu cât timp a stat ecranul deschis.
Serverul păstrează timpul
LiveScoreTime este sursa oficialăCeasul pe care îl vezi este calculat de server din cronologia LiveScoreTime, nu ticăit local de dispozitivul tău. La încărcarea ecranului se citesc timpul scurs și starea de pauză de pe server; memoria cache locală este doar o soluție de rezervă când răspunsul serverului lipsește. De aceea, două persoane care urmăresc același meci live văd același ceas.
Dacă competiția este configurată cu reprize (matchRoundDuration setat), cronometrul se oprește automat la finalul fiecărei reprize. Când pui pauză și timpul jucat a depășit durata reprizei, serverul marchează acea întrerupere ca final de repriză, iar timpul scurs se aliniază la limita reprizei. Ceasul pentru repriza următoare pornește curat de acolo, în loc să care câteva secunde rătăcite.
După ce închei
Când jocul s-a terminat, închei meciul din cronometru (POST /competition/endMatch/:matchId). Backend-ul finalizează rezultatul folosind evenimentele înregistrate și timpul scurs calculat pe server, apoi aplicația te scoate din modul live.
Pe iOS și Android, aplicația se întoarce pur și simplu la ecranul din care ai venit. În aplicația web, navighează în schimb la ecranul Editare meci al meciului. Este intenționat: un deep-link web direct în modul live nu are adesea istoric la care să se întoarcă, așa că întoarcerea te-ar scoate complet din competiție — direcționarea către Editare meci te păstrează în competiție, cu datele finale de după meci încărcate.
O arbitră deschide meciul pe telefon cu un minut înainte de lovitura de start — Start este încă inactiv. La fluier, butonul se activează; apasă Start și ceasul pornește. La pauză apasă Stop, iar pentru repriza a doua Reluare. Între timp, organizatorul gazdă urmărește același meci în aplicația web și vede un ceas identic, pentru că ambii îl citesc de pe server. Când sună fluierul final, ea încheie meciul; telefonul ei revine la program, în timp ce aplicația web a organizatorului deschide ecranul de editare al meciului încheiat.
Ghiduri conexe
Consemnează fiecare eveniment live — goluri, autogoluri, penalty-uri, cartonașe, pase decisive și altele — raportat la ceasul în mișcare.
Înregistrează un jucător care iese și unul care intră în timpul meciului live.
Preferi să înregistrezi doar scorul final, fără să pornești ceasul? Introdu-l direct — și află de ce contează imediat.