Przyznanie i odebranie glosu oraz oba tryby (otwarty mikrofon, wideo dla wszystkich) zmieniaja uprawnienia uczestnika przez updateParticipant, bez ponownego wejscia na sale. Odebranie najpierw wycisza sciezke na serwerze, wiec dziala takze u klienta, ktory nie odebral zdarzenia. Sala LiveKit ma staly key; mikrofon wlacza sie sam po przyznaniu glosu. Rola uczestnika liczona w jednym miejscu (VideoService.participantRole) dla biletu i zmiany na zywo. RoomPermissionTest pilnuje jawnej listy zrodel publikacji. Blokada pisania na czacie ma ikone przekreslonego dymku i znacznik "bez czatu" zamiast przekreslonego mikrofonu. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -1649,12 +1649,24 @@ Tabela `speak_requests` (V17), kolejka w panelu prowadzenia, temat WebSocket
|
||||
- **Osobna tabela, nie kolejny typ w `interactions`.** Zgloszenie nie jest
|
||||
wypowiedzia: nie ma tresci, nie idzie na czat, nie trafia do archiwum.
|
||||
Ma za to wlasny cykl zycia, ktorego zadna interakcja nie ma.
|
||||
- **Glos wynika z tokenu, nie ze zgloszenia.** Przyznanie ustawia
|
||||
`registrations.room_role` na SPEAKER, a mikrofon otwiera dopiero token
|
||||
wydany u dostawcy. Gdyby wystarczal stan w przegladarce, podmiana odpowiedzi
|
||||
pozwalalaby mowic bez zgody moderatora. **Po zmianie roli front pobiera
|
||||
token na nowo**: bez tego uczestnik widzi napis "masz glos" i ma zamkniety
|
||||
mikrofon.
|
||||
- **Glos wynika z uprawnien u dostawcy, nie ze zgloszenia.** Przyznanie ustawia
|
||||
`registrations.room_role` na SPEAKER, a mikrofon otwiera dopiero uprawnienie
|
||||
nadane przez serwer pokoju. Gdyby wystarczal stan w przegladarce, podmiana
|
||||
odpowiedzi pozwalalaby mowic bez zgody moderatora.
|
||||
- **Przy LiveKit uprawnienia zmienia na zywo SERWER** (`RoomPermissionSync`,
|
||||
`updateParticipant`), bez ponownego wejscia na sale. Wczesniej zmiana szla
|
||||
wylacznie przez nowy token i przemontowanie sali w przegladarce: odebranie
|
||||
glosu dzialalo tylko u klienta, ktory posluchal zdarzenia, a kazda zmiana
|
||||
gasila obraz i dzwiek na chwile. Odebranie najpierw wycisza sciezke
|
||||
(`mutePublishedTrack`), potem zmienia uprawnienia.
|
||||
- **Sala LiveKit ma staly `key`.** Nowy token nadal jest pobierany, ale na
|
||||
polaczonej sali podmiana nic nie robi; sluzy ponownemu wejsciu po zerwaniu.
|
||||
- **Mikrofon wlacza sie sam po przyznaniu glosu** (`MicOnGrant`), raz na
|
||||
przyznanie i dopiero po nadaniu uprawnienia przez serwer. Otwarty mikrofon
|
||||
dla calej sali tego nie robi, bo tam nikt o glos nie prosil.
|
||||
- **`canPublish=true` z pusta lista zrodel znaczy u LiveKit "wszystkie
|
||||
zrodla".** Kazda rola publikujaca ma jawna liste; pilnuje tego
|
||||
`RoomPermissionTest`, sprawdzony w obie strony.
|
||||
- **Zgloszenie i rola zmieniaja sie w jednej transakcji.** Rozdzielenie daje
|
||||
uczestnika z rola SPEAKER i bez zgloszenia w kolejce (mikrofon otwarty,
|
||||
prowadzacy nie wie dlaczego) albo odwrotnie.
|
||||
@@ -1717,8 +1729,10 @@ Kolumna `webinars.open_mic` (V18), przelacznik w panelu prowadzenia.
|
||||
nieaktywna, a nie nieaktualna.
|
||||
- **Wideo zostaje wylaczone takze w tym trybie.** `RoomRole.SPEAKER` to
|
||||
`canPublishVideo=false`, wiec otwarty mikrofon nie moze wlaczyc nikomu kamery.
|
||||
- Przelaczenie idzie tematem `speak`, zeby otwarte sale pobraly token na nowo:
|
||||
bez tego uprawnienie zmienia sie w bazie, a przegladarki dzialaja na starym.
|
||||
- Przelaczenie zmienia uprawnienia calej sali po stronie serwera
|
||||
(`RoomPermissionSync.syncWebinar`, w tle, z pominieciem osob bez zmiany)
|
||||
i idzie tematem `speak`, zeby przegladarki pobraly aktualny token na wypadek
|
||||
ponownego wejscia.
|
||||
|
||||
### Sygnal dzwiekowy w panelu prowadzenia
|
||||
|
||||
|
||||
Reference in New Issue
Block a user