A host can let unlimited players speak at once, and cannot mute everyone
Maintainer thường phản hồi trong vòng 1 ngày
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 54/100
- Loại issue
- Tính năng
- Độ rõ ràng
- Đặc tả rõ ràng
- Mức độ hoạt động
- Sôi nổi
- Công nghệ
- express, typescript
- Lĩnh vực
- audio-video-rtc, backend, full-stack
Hướng nghiên cứu
Start with apps/streaming/src/routes.test.ts to learn the permission test patterns, then read the promote and demote routes in apps/streaming/src/routes.ts and the room rules in livekit.ts. Check how participant attributes are listed and updated before implementing the speaker cap, host mute-all action, and visible count. Done means the host sees the current count, the backend rejects promotions at the cap, and tests cover the cap and demoting several speakers.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
The promote-speaker endpoint has no cap:
// apps/streaming/src/routes.ts
router.put("/sessions/:sessionId/speakers/:participantId", async (req, res) => {
const caller = await requireCaller(req, res);
if (caller.kind !== "organizer") {
return errorResponse(res, 403, "Only the host can let a player speak.");
}
await roomService.updateParticipant(roomName(...), playerIdentity(...), {
permission: SPEAKER_PERMISSION,
attributes: { speaker: "yes", hand: "" },
});
It checks the caller is the host and nothing else. A host can promote as many players as they like, one at a time, with no limit and no awareness of how many already have a live microphone.
Why it matters
The permission model is otherwise careful — players join unable to publish, and speaking is granted deliberately. But the thing that model exists to prevent is an unusable call, and granting 30 microphones one at a time gets there anyway.
In practice a host works through a list of raised hands, promotes someone, forgets to take the floor back, promotes the next. Nothing warns them. With 300 players in a room, a handful of forgotten open microphones is enough to make the session unusable — and the host has no single view of who currently holds one.
What to build
A cap on simultaneous speakers. Something small — 3 or 5 — refusing the next promotion with a clear message rather than silently allowing it. The limit belongs in the backend; the frontend can mirror it, but the server has to be the one enforcing it.
A "mute everyone" action for the host. Today taking the floor back is one DELETE per participant. After a busy discussion the host needs one button that demotes every current speaker.
A visible count. The host should see "2 of 3 speaking" rather than having to remember.
Worth thinking about
- Where does the limit live? A constant next to
MAX_LIVE_VIDEO_PARTICIPANTSinlivekit.tskeeps it with the other room rules. - What happens when the cap is hit — refuse, or demote the longest-speaking player automatically? Refusing is simpler and more predictable; say which you chose.
- Counting current speakers means listing room participants and checking their attributes. Worth checking what that costs in a 300-player room before calling it on every promotion.
Definition of done
- Promoting past the cap is refused with a message the host can act on
- The host can demote every speaker in one action
- The host can see how many people currently hold a microphone
- Tests cover the cap being hit and mute-all with several speakers
apps/streaming/src/routes.test.ts already has 22 tests covering the permission paths — worth reading first for the house style.
- Ngôn ngữ chính
- TypeScript
- Star
- 21
- Fork
- 7
- Merge trung bình
- 4 giờ 31 phút
- Pull request đã merge (30 ngày)
- 22
Chuẩn bị môi trường
- Có Dockerfile hoặc tệp Docker Compose
- Có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của TheCodeHeist-Coder/Rexial
-
bug good first issue help wanted UI & UX
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 84/100
TheCodeHeist-Coder/Rexial#205 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
One PDF upload freezes the whole AI service, including its health checkCó thể đã có người làm @Anshuu2004 đã nhận 2 ngày trước. Đang mởBackend first issue bug help wanted
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 84/100
TheCodeHeist-Coder/Rexial#193 · 2 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
The join endpoint returns an error shape the frontend cannot readCó thể đã có người làm @Anshuu2004 đã nhận 2 ngày trước. Đang mởBackend first issue bug good first issue help wanted
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 86/100
TheCodeHeist-Coder/Rexial#192 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Registering without a password returns a 500 instead of telling you what is missingCó thể đã có người làm @Anshuu2004 đã nhận 2 ngày trước. Đang mởBackend first issue bug good first issue help wanted
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
TheCodeHeist-Coder/Rexial#191 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
CI does not run the frontend testsCó thể đã có người làm @nayan45633 đã nhận 2 ngày trước. Đang mởBackend first issue good first issue help wanted
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
TheCodeHeist-Coder/Rexial#188 · 2 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của TheCodeHeist-Coder/Rexial
Issue tương tự
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 82/100
Maintainer thường phản hồi trong vòng 1 ngày
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 82/100
juice-shop/juice-shop#3706 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
sbx up from a subfolder silently pushes the whole work treeCó thể đã có người làm @pdettori đã nhận hôm nay. Đang mởenhancement
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
Maintainer thường phản hồi trong vòng 1 ngày
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
outline/outline#14348 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
bug needs-triage
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
Maintainer thường phản hồi trong vòng 1 ngày