Hacktoberfest 2026: những issue maintainer đã đánh dấu cho tháng Mười, đang mở và phù hợp người mới. Xem issue Hacktoberfest

A host can let unlimited players speak at once, and cannot mute everyone

Đang mở
#204 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

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

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ả

Backend first issue enhancement help wanted

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_PARTICIPANTS in livekit.ts keeps 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

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. 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.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của TheCodeHeist-Coder/Rexial

Tất cả issue của TheCodeHeist-Coder/Rexial

Issue tương tự

Thêm issue về TypeScript

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.