Managing participants¶
從後端伺服器列出、刪除和靜音參與者(participant)。
Initialize RoomServiceClient¶
參與者管理由 RoomServiceClient 完成,建立方式如下:
List Participants¶
Get details on a Participant¶
Updating permissions¶
您可以使用 UpdateParticipant
動態修改參與者的權限。當權限發生變化時,連線的用戶端將透過 ParticipantPermissionChanged
事件收到通知。
例如,當房間內的觀眾角色轉變為演講者角色時,這非常有用。
請注意,如果您撤銷參與者的 CanPublish
權限,他們發布的所有軌道將自動取消發布。
// Promotes an audience member to a speaker
res, err := c.UpdateParticipant(context.Background(), &livekit.UpdateParticipantRequest{
Room: roomName,
Identity: identity,
Permission: &livekit.ParticipantPermission{
CanSubscribe: true,
CanPublish: true,
CanPublishData: true,
},
})
// ...and later move them back to audience
res, err := c.UpdateParticipant(context.Background(), &livekit.UpdateParticipantRequest{
Room: roomName,
Identity: identity,
Permission: &livekit.ParticipantPermission{
CanSubscribe: true,
CanPublish: false,
CanPublishData: true,
},
})
from livekit.api import UpdateParticipantRequest, ParticipantPermission
# Promotes an audience member to a speaker
await lkapi.room.update_participant(UpdateParticipantRequest(
room=room_name,
identity=identity,
permission=ParticipantPermission(
can_subscribe=True,
can_publish=True,
can_publish_data=True,
),
))
# ...and later move them back to audience
await lkapi.room.update_participant(UpdateParticipantRequest(
room=room_name,
identity=identity,
permission=ParticipantPermission(
can_subscribe=True,
can_publish=False,
can_publish_data=True,
),
))
// Promotes an audience member to a speaker
await roomService.updateParticipant(roomName, identity, undefined, {
canPublish: true,
canSubscribe: true,
canPublishData: true,
});
// ...and later move them back to audience
await roomService.updateParticipant(roomName, identity, undefined, {
canPublish: false,
canSubscribe: true,
canPublishData: true,
});
Updating metadata¶
您可以在必要時修改參與者的元資料。一旦發生改變,連線的客戶端將收到 ParticipantMetadataChanged
事件。
Remove a Participant¶
RemoteParticipant
將強制斷開參與者與房間的連接。但是,此操作不會使參與者的 token 無效。
為了防止參與者重新加入同一房間,請考慮以下措施:
- 產生具有短 TTL (生存時間)的存取權杖(access token)。
- 不要透過應用程式的後端向同一參與者提供新的 token。
Mute/unmute a Participant's Track¶
若要將參與者的某個特定軌道靜音,請先從 GetParticipant
(上文)取得 TrackSid,然後呼叫 MutePublishedTrack
:
您也可以將 muted
設為 false
來取消軌道靜音。
Info
遠端取消靜音可能會讓使用者感到意外,因此預設情況下它是禁用的。
若要允許遠端取消靜音,請在專案設定中選擇 Admins can remotely unmute tracks
選項。
如果您是自託管(self-hosting),請在設定 YAML 中設定 room.enable_remote_unmute:true
。