Prerequisites
确保您的参与者预设已启用 **Kick Participants(kick_participant)**主持人权限。
要为所有参与者结束当前 会话(session) ,请使用 kickAll() 移除所有参与者。这将停止该会话的任何正在进行的录制,并将会话状态设置为 ENDED。
结束会话与离开会议不同。离开会议仅断开当前参与者的连接。如果其他参与者仍然存在,会话将保持活动状态。
Web Mobile
React Web Components Angular
检查本地参与者是否具有移除参与者的权限。
const canEndSession = meeting.self.permissions.kickParticipant === true ;
if ( ! canEndSession) {
// 在您的 UI 中禁用“结束会议/会话”控件。
// 您还可以显示一条消息来解释为什么该操作不可用。
} const canEndSession = meeting.self.permissions.kickParticipant === true ;
if ( ! canEndSession) {
// 在您的 UI 中禁用“结束会议/会话”控件。
// 您还可以显示一条消息来解释为什么该操作不可用。
} const canEndSession = meeting.self.permissions.kickParticipant === true ;
if ( ! canEndSession) {
// 在您的 UI 中禁用“结束会议/会话”控件。
// 您还可以显示一条消息来解释为什么该操作不可用。
} val canEndSession = meeting.localUser.permissions.host.canKickParticipant
if ( ! canEndSession) {
// 在您的 UI 中禁用“结束会议/会话”控件。
// 您还可以显示一条消息来解释为什么该操作不可用。
} let canEndSession = meeting.localUser.permissions.host.canKickParticipant
if ! canEndSession {
// 在您的 UI 中禁用“结束会议/会话”控件。
// 您还可以显示一条消息来解释为什么该操作不可用。
} final canEndSession = meeting.localUser.permissions.host.canKickParticipant;
if ( ! canEndSession) {
// 在您的 UI 中禁用“结束会议/会话”控件。
// 您还可以显示一条消息来解释为什么该操作不可用。
} const canEndSession = meeting.self.permissions.kickParticipant === true ;
if ( ! canEndSession) {
// 在您的 UI 中禁用“结束会议/会话”控件。
// 您还可以显示一条消息来解释为什么该操作不可用。
}
通过移除所有参与者来结束会话。
如果参与者不具备所需的权限,kickAll() 将抛出错误代码为 1201 的 ClientError。
try {
await meeting.participants. kickAll ();
} catch (err) {
if (err?.code === 1201 ) {
// 该参与者没有权限结束会话。
// 更新您的 UI 以指示该操作不被允许。
return ;
}
throw err;
} 如果参与者不具备所需的权限,kickAll() 将抛出错误代码为 1201 的 ClientError。
try {
await meeting.participants. kickAll ();
} catch (err) {
if (err?.code === 1201 ) {
// 该参与者没有权限结束会话。
// 更新您的 UI 以指示该操作不被允许。
return ;
}
throw err;
} 如果参与者不具备所需的权限,kickAll() 将抛出错误代码为 1201 的 ClientError。
try {
await meeting.participants. kickAll ();
} catch (err) {
if (err?.code === 1201 ) {
// 该参与者没有权限结束会话。
// 更新您的 UI 以指示该操作不被允许。
return ;
}
throw err;
} 如果参与者不具备所需的权限,kickAll() 将返回 HostError。
val error: HostError ? = meeting.participants. kickAll ()
if (error != null ) {
when (error) {
is HostError.KickPermissionDenied -> {
// 该参与者没有权限结束会话。
// 更新您的 UI 以指示该操作不被允许。
}
}
} else {
// 成功启动会话结束
} 如果参与者不具备所需的权限,kickAll() 将返回 HostError。
let error: HostError ? = meeting.participants. kickAll ()
if let error = error {
switch error {
case .kickPermissionDenied :
// 该参与者没有权限结束会话。
// 更新您的 UI 以指示该操作不被允许。
break
default:
break
}
} else {
// 成功启动会话结束
} meeting.participants. kickAll (onResult : (error) {
if (error != null ) {
// 该参与者没有权限结束会话。
// 更新您的 UI 以指示该操作不被允许。
} else {
// 成功启动会话结束
}
}); 如果参与者不具备所需的权限,kickAll() 将抛出错误代码为 1201 的 ClientError。
try {
await meeting.participants. kickAll ();
} catch (err) {
if (err?.code === 1201 ) {
// 该参与者没有权限结束会话。
// 更新您的 UI 以指示该操作不被允许。
return ;
}
throw err;
}
监听会话结束事件。
当会话结束时,所有参与者都会离开会话。SDK 会触发 roomLeft 事件,且 state 设置为 ended。
meeting.self. on ( "roomLeft" , ({ state }) => {
if (state === "ended" ) {
// 更新您的 UI 以显示会议会话已结束。
}
}); 当会话结束时,所有参与者都会离开会话。SDK 会触发 roomLeft 事件,且 state 设置为 ended。
meeting.self. on ( "roomLeft" , ({ state }) => {
if (state === "ended" ) {
// 更新您的 UI 以显示会议会话已结束。
}
}); 当会话结束时,所有参与者都会离开会话。SDK 会触发 roomLeft 事件,且 state 设置为 ended。
meeting.self. on ( "roomLeft" , ({ state }) => {
if (state === "ended" ) {
// 更新您的 UI 以显示会议会话已结束。
}
}); 当会话结束时,所有参与者都会离开会话。您可以订阅事件监听器以处理会话结束。
meeting. addMeetingRoomEventListener ( object : RtkMeetingRoomEventListener {
override fun onMeetingEnded () {
// 更新您的 UI 以显示会议会话已结束。
}
}) 当会话结束时,所有参与者都会离开会话。您可以订阅事件监听器以处理会话结束。
// 实现委托方法
extension MeetingViewModel : RtkMeetingRoomEventListener {
func onMeetingEnded () {
// 更新您的 UI 以显示会议会话已结束。
}
}
meeting. addMeetingRoomEventListener ( self ) 当会话结束时,所有参与者都会离开会话。您可以订阅事件监听器以处理会话结束。
class MeetingRoomListener extends RtkMeetingRoomEventListener {
@override
void onMeetingEnded () {
// 更新您的 UI 以显示会议会话已结束。
}
}
// 添加监听器
meeting. addMeetingRoomEventListener ( MeetingRoomListener ()); 当会话结束时,所有参与者都会离开会话。SDK 会触发 roomLeft 事件,且 state 设置为 ended。
meeting.self. on ( "roomLeft" , ({ state }) => {
if (state === "ended" ) {
// 更新您的 UI 以显示会议会话已结束。
}
});
您还可以通过使用 移除所有参与者 API 移除所有参与者,从而从后端结束会话。
使用 Kick all participants API 方法从会议的活动会话中移除所有参与者。
Required API token permissions
At least one of the following token permissions is required: Kick all participants bash curl "https://api.cloudflare.com/client/v4/accounts/ $ACCOUNT_ID /realtime/kit/ $APP_ID /meetings/ $MEETING_ID /active-session/kick-all" \
--request POST \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN "
注册订阅了 meeting.ended 的 Webhook。RealtimeKit 会在会话结束时发送此事件。
您可以使用它来触发后端工作流,例如发送通知、生成报告或更新数据库中的会话记录。
Required API token permissions
At least one of the following token permissions is required: Add a webhook bash curl "https://api.cloudflare.com/client/v4/accounts/ $ACCOUNT_ID /realtime/kit/ $APP_ID /webhooks" \
--request POST \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN " \
--json '{
"name": "Session ended webhook",
"url": "<YOUR_WEBHOOK_URL>",
"events": [
"meeting.ended"
]
}'
结束会话并不会禁用会议。参与者可以重新加入会议并开始新的会话。
要防止参与者重新加入并开始新的会话,请使用 Update a meeting API 将会议状态设置为 INACTIVE。
Required API token permissions
At least one of the following token permissions is required: Update a meeting bash curl "https://api.cloudflare.com/client/v4/accounts/ $ACCOUNT_ID /realtime/kit/ $APP_ID /meetings/ $MEETING_ID " \
--request PATCH \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN " \
--json '{
"status": "INACTIVE"
}'
在 预设 中查看预设如何控制权限。
在 本地参与者 中查看本地参与者房间状态的可能值。