Cloudflare RealtimeKit 完整 API 参考:Meeting 对象、REST 端点与 SDK 方法实战指南

发布时间:2026/11/10 17:21:42

Cloudflare RealtimeKit 完整 API 参考:Meeting 对象、REST 端点与 SDK 方法实战指南 Cloudflare RealtimeKit 完整 API 参考Meeting 对象、REST 端点与 SDK 方法实战指南【免费下载链接】skillsSkills Catalog for Codex项目地址: https://gitcode.com/GitHub_Trending/skills4/skills本指南以 RealtimeKit 官方 API 参考文档为主体系统讲解客户端RealtimeKitClient的 Meeting 对象self/participants/chat/polls/plugins/ai/meta、TypeScript 类型定义、响应式 Store 架构以及从会议管理、参与者、录制、直播到 Webhook 的完整 REST API 与 Session 生命周期。读完本文你将掌握基于cloudflare/realtimekit构建实时音视频应用所需的全部 API 细节并能在 realtimekit 配套文档 与仓库源码的佐证下直接落地编码。RealtimeKit API 总览RealtimeKit 是构建在 Cloudflare Realtime SFU 之上的 SDK 套件抽象了 WebRTC 的底层复杂度为 Web/移动端提供可定制的实时音视频能力。客户端通过cloudflare/realtimekit包中的RealtimeKitClient与云端交互服务端则通过 Cloudflare API v4 的/realtime/kit/{app_id}端点管理会议、参与者与录制。其 API 体系分为三层客户端 Meeting 对象meeting.join()/meeting.leave()以及meeting.self、meeting.participants、meeting.meta、meeting.chat、meeting.polls、meeting.plugins、meeting.ai命名空间TypeScript 类型RealtimeKitClient、Participant、States、UIConfig等REST API会议、参与者、录制、直播、会话分析、Webhook 等管理端点。在阅读 API 细节前建议先明确几个核心概念详见 README 核心概念App工作区聚合 meetings、participants、presets、recordings建议 staging/production 使用独立 AppMeeting可复用的虚拟房间每次加入会创建新的SessionParticipant通过 REST API 添加的用户返回的authToken供客户端 SDK 使用不可复用Peer IDid每次会话唯一重连会变化Participant IDuserId跨会话持久。Meeting 对象 APImeeting是RealtimeKitClient实例化后暴露的入口对象所有状态与操作都挂在它的命名空间上。meeting.self本地参与者meeting.self描述本地参与者即当前用户其属性覆盖身份与媒体状态属性id、userId、name、audioEnabled、videoEnabled、screenShareEnabled、audioTrack、videoTrack、screenShareTracks、roomJoined、roomState。方法一览// 媒体开关启用/禁用音频、视频、屏幕共享 await meeting.self.enableAudio() / disableAudio() / enableVideo() / disableVideo() await meeting.self.enableScreenShare() / disableScreenShare() // 设置昵称——注意只能在 join 之前调用 await meeting.self.setName(Name) // 设备管理设置当前设备或枚举所有可用设备 await meeting.self.setDevice(device) const devices await meeting.self.getAllDevices() / getAudioDevices() / getVideoDevices() / getSpeakerDevices()事件meeting.self.on(roomJoined, () {}) meeting.self.on(audioUpdate, ({ audioEnabled, audioTrack }) {})meeting.self支持的事件还包括videoUpdate、screenShareUpdate、deviceUpdate、deviceListUpdate。设备切换的典型用法是先getAllDevices()拿到设备列表再根据用户选择用setDevice(device)切换见 patterns.md 设备选择示例。meeting.participants远端参与者集合meeting.participants提供四个响应式集合均为 Live Mapjoined已加入、active活跃、waitlisted等待列表中、pinned固定。// 集合操作转数组、计数、按键取值 const participants meeting.participants.joined.toArray() const count meeting.participants.joined.size() const p meeting.participants.joined.get(peer-id)每个 participant 对象属性与self同构id / userId / name、audioEnabled / videoEnabled / screenShareEnabled、audioTrack / videoTrack / screenShareTracks。事件监听meeting.participants.joined.on(participantJoined, (participant) {}) meeting.participants.joined.on(participantLeft, (participant) {})一个常见的坑meeting.participants不包含meeting.self因此参会总人数应为meeting.participants.joined.size() 1见 gotchas.md。meeting.meta会议元数据meeting.meta.meetingId / meetingTitle / meetingStartedTimestamp可用于在roomJoined事件后展示会议信息或埋点统计。meeting.chat聊天meeting.chat.messages // 消息数组 await meeting.chat.sendTextMessage(Hello) / sendImageMessage(file) meeting.chat.on(chatUpdate, ({ message, messages }) {})聊天消息有 4000 字符的长度上限见 gotchas.md 限制表。meeting.polls投票meeting.polls.items // 投票数组 await meeting.polls.create(question, options, anonymous, hideVotes) await meeting.polls.vote(pollId, optionIndex)对应 REST 侧的POST /meetings/{meeting_id}/active-session/poll端点。meeting.plugins协作应用Addonmeeting.plugins.all // 插件数组 await meeting.plugins.activate(pluginId) / deactivate()插件系统允许在会议中激活白板等协作应用监听pluginActivated事件可感知激活状态见 patterns.md Addon 小节。meeting.aiAI 能力meeting.ai.transcripts // 实时转写需在 Preset 中开启核心方法await meeting.join() // 加入会议成功后 meeting.self 触发 roomJoined await meeting.leave() // 离开会议注意时序监听器必须在join()之前注册否则会错过事件见 gotchas.md 事件不触发。TypeScript 类型定义所有类型均可从cloudflare/realtimekit导入import type { RealtimeKitClient, States, UIConfig, Participant } from cloudflare/realtimekit; // 主接口 interface RealtimeKitClient { self: SelfState; // 本地参与者 (id, userId, name, audioEnabled, videoEnabled, roomJoined, roomState) participants: { joined, active, waitlisted, pinned }; // 响应式 Maps chat: ChatNamespace; // messages[], sendTextMessage(), sendImageMessage() polls: PollsNamespace; // items[], create(), vote() plugins: PluginsNamespace; // all[], activate(), deactivate() ai: AINamespace; // transcripts[] meta: MetaState; // meetingId, meetingTitle, meetingStartedTimestamp join(): Promisevoid; leave(): Promisevoid; } // Participantself 与远端参与者共用同一结构 interface Participant { id: string; // Peer ID重连后会变化 userId: string; // 持久化参与者 ID name: string; audioEnabled: boolean; videoEnabled: boolean; screenShareEnabled: boolean; audioTrack: MediaStreamTrack | null; videoTrack: MediaStreamTrack | null; screenShareTracks: MediaStreamTrack[]; }RealtimeKitClient的构造配置可参考 configuration.md 核心 SDK 配置支持authToken、video、audio、autoSwitchAudioDevice以及mediaConfiguration视频分辨率、帧率、回声消除、降噪、屏幕共享参数等。Store 架构响应式状态驱动RealtimeKit 采用响应式 Store 架构核心原则是事件驱动更新 Live Maps// 订阅状态变更 meeting.self.on(audioUpdate, ({ audioEnabled, audioTrack }) {}); meeting.participants.joined.on(participantJoined, (p) {}); // 同步读取当前状态 const isAudioOn meeting.self.audioEnabled; const count meeting.participants.joined.size();关键原则状态变更后先更新再发事件订阅者拿到的永远是最新状态克制使用.toArray()集合是 Live Map频繁转数组会造成不必要的内存与渲染开销仅在需要遍历渲染时才调用优先事件而非轮询事件驱动是官方推荐模式配合 patterns.md 中的 React HooksuseRealtimeKitSelector可以做到自动重渲染、选择器记忆化与类型安全。REST API 参考REST 端点的基础路径为https://api.cloudflare.com/client/v4/accounts/{account_id}/realtime/kit/{app_id}所有 REST 调用必须由服务端发起Workers 或后端严禁在客户端暴露 API Token否则会触发 CORS 问题并带来安全风险见 gotchas.md。会议管理MeetingsGET /meetings # 列出全部会议 GET /meetings/{meeting_id} # 获取会议详情 POST /meetings # 创建会议: {title: ...} PATCH /meetings/{meeting_id} # 更新会议: {title: ..., record_on_start: true}参与者管理ParticipantsGET /meetings/{meeting_id}/participants # 列出全部参与者 GET /meetings/{meeting_id}/participants/{participant_id} # 获取参与者详情 POST /meetings/{meeting_id}/participants # 添加参与者: {name: ..., preset_name: ..., custom_participant_id: ...} PATCH /meetings/{meeting_id}/participants/{participant_id} # 更新参与者: {name: ..., preset_name: ...} DELETE /meetings/{meeting_id}/participants/{participant_id} # 删除参与者 POST /meetings/{meeting_id}/participants/{participant_id}/token # 刷新参与者 tokenPOST /participants是客户端接入的关键返回的authToken需下发给前端用于初始化RealtimeKitClientcustom_participant_id可用于对接自有用户体系实现跨会话追踪。token 默认 24 小时过期会话中过期时使用 refresh 端点续期不要复用旧 token。活跃会话Active SessionGET /meetings/{meeting_id}/active-session # 获取活跃会话 POST /meetings/{meeting_id}/active-session/kick # 踢出指定用户: {user_ids: [id1, id2]} POST /meetings/{meeting_id}/active-session/kick-all # 踢出全部用户 POST /meetings/{meeting_id}/active-session/poll # 创建投票: {question: ..., options: [...], anonymous: false}录制RecordingGET /recordings?meeting_id{meeting_id} # 列出录制 GET /recordings/active-recording/{meeting_id} # 获取进行中的录制 POST /recordings # 开始录制: {meeting_id: ..., type: composite}或 track PUT /recordings/{recording_id} # 控制录制: {action: pause}或 resume、stop POST /recordings/track # 轨道录制: {meeting_id: ..., layers: [...]}录制需要 Preset 具备canRecord与canStartStopRecording权限且要求存在活跃会话至少一名参与者在线录制最长 6 小时见 gotchas.md。直播LivestreamingGET /livestreams?exclude_meetingsfalse # 列出全部直播 GET /livestreams/{livestream_id} # 获取直播详情 POST /meetings/{meeting_id}/livestreams # 为会议开启直播 POST /meetings/{meeting_id}/active-livestream/stop # 停止直播 POST /livestreams # 创建独立直播返回 {ingest_server, stream_key, playback_url}会话与数据分析Sessions AnalyticsGET /sessions # 列出全部会话 GET /sessions/{session_id} # 获取会话详情 GET /sessions/{session_id}/participants # 列出会话参与者 GET /sessions/{session_id}/participants/{participant_id} # 通话统计 GET /sessions/{session_id}/chat # 下载聊天记录 CSV GET /sessions/{session_id}/transcript # 下载转写记录 CSV GET /sessions/{session_id}/summary # 获取摘要 POST /sessions/{session_id}/summary # 生成摘要 GET /analytics/daywise?start_dateYYYY-MM-DDend_dateYYYY-MM-DD # 按天统计 GET /analytics/livestreams/overall # 直播整体统计WebhooksGET /webhooks # 列出全部 Webhook POST /webhooks # 创建: {url: https://..., events: [session.started, session.ended]} PATCH /webhooks/{webhook_id} # 更新 DELETE /webhooks/{webhook_id} # 删除Webhook 事件可用于服务端感知会话生命周期如session.started、session.ended触发对应的业务逻辑计费、通知、数据落库等。Session 生命周期Initialization → Join Intent → [Waitlist?] → Meeting Screen (Stage) → Ended ↓ Approved [Rejected → Ended]UI Kit 会自动处理状态流转。当 Preset 开启候场Waitlist时参与者进入等待队列由服务端通过active-session/waitlist/approve审核通过后客户端自动进入会议房间并触发meeting.self的roomJoined事件见 patterns.md Waitlist 处理。每次加入会议都会创建一个新的 Session最后一个参与者离开后 Session 结束。实战整合从 REST 到客户端的完整调用链将 REST 与客户端 SDK 串联起来的典型模式是Worker 后端生成 token → 前端拿到 token 初始化客户端 → 加入会议并监听状态。服务端Worker侧代码可参考 patterns.md 后端集成示例前端请求/api/join-meetingWorker 用CLOUDFLARE_API_TOKEN调用POST /meetings/{id}/participants将返回的data.result.authToken下发给前端。客户端核心流程import RealtimeKitClient from cloudflare/realtimekit; const meeting new RealtimeKitClient({ authToken: token, video: true, audio: true }); meeting.self.on(roomJoined, () console.log(Joined:, meeting.meta.meetingTitle)); meeting.participants.joined.on(participantJoined, (p) console.log(${p.name} joined)); await meeting.join();调试时可参考 gotchas.md 调试技巧监听deviceListUpdate排查设备问题、监听roomJoined打印会议信息、对全部事件打日志等。小结与扩展阅读RealtimeKit 的 API 设计围绕响应式 Store 事件驱动展开客户端通过meeting对象完成音视频、聊天、投票、插件与 AI 转写的全功能交互服务端通过 REST API 完成资源管理与生命周期控制。两者的边界清晰——媒体与控制走 SDK管理与凭证走服务端 REST。本仓库中与本文配套的参考资料RealtimeKit 概览与快速开始 —— 核心概念、Quick Start、包选型RealtimeKit 配置指南 —— SDK 安装、Preset、wrangler、主题与 i18nRealtimeKit 使用模式 —— UI 组件、React Hooks、后端集成、最佳实践RealtimeKit 常见问题 —— 错误排查、限额表、安全与性能建议。【免费下载链接】skillsSkills Catalog for Codex项目地址: https://gitcode.com/GitHub_Trending/skills4/skills创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/11/10 11:51:28

Midscene.js 完整指南:视觉AI驱动的跨平台UI自动化测试

Midscene.js 完整指南:视觉AI驱动的跨平台UI自动化测试 【免费下载链接】midscene GUI Agent for E2E Testing 项目地址: https://gitcode.com/GitHub_Trending/mid/midscene Midscene.js 是一款基于视觉AI的UI自动化测试框架(GUI Agent for E2E …

2026/11/6 16:46:45

SSM+Vue游戏攻略网站项目深度解析:从分层架构到生产部署

简介:本资源是一套完整的基于SSM(SpringSpringMVCMyBatis)与Vue实现的游戏攻略网站毕业设计/课程设计项目,面向Java与前端初学者、高校计算机专业学生及前后端分离实践者,解决从需求分析、模块开发到部署上线的全流程学…

2026/11/11 14:49:36

琼中电工证复审怎么走?内部消息告诉你别被中介骗

琼中电工证复审怎么走?内部消息告诉你别被中介骗 你是不是也遇到过这种情况?手里拿着电工证,想着复审,结果一查网上信息五花八门,不知道从哪儿下手,生怕被中介坑了钱还办不成?别急,今天我就用 内部消息 告诉你, 琼中电工证复审…

2026/11/11 14:49:36

电工证复审了没有记录怎么考 多久拿证才靠谱

电工证复审了没有记录怎么考 多久拿证才靠谱 怕考不过白交培训费?电工证复审了没有记录的小伙伴,千万别再瞎折腾了!很多人在考电工证时,因为信息不对称、流程不熟悉,结果花了几千块培训费,结果证没拿到,甚至发现之前考的证没记录,复审也不通过,白白…

2026/11/11 14:49:36

审电工证通知考试文档怎么报名?南阳人别再被中介坑了

审电工证通知考试文档怎么报名?南阳人别再被中介坑了 你是不是还在为【审电工证通知考试文档】怎么报名发愁?不知道去哪报名怕被中介坑?别急,今天就来帮你理清楚整个流程,避免踩坑,还能省下不少冤枉钱。 电工证到底有多重要?…

2026/11/11 14:49:36

建设厅特种工考试时间多少钱 2025年最新安排来了

建设厅特种工考试时间多少钱 2025年最新安排来了 你现在正愁找不到工作,手里又没有特种作业证,这事儿真的急。特别是在建筑工地,没有证书根本进不了门,更别说干技术活了。特种作业证不是摆设,它是你上岗的“通行证”。而眼下最头疼的问题就是:…

2026/11/11 14:49:36

保定电工证考试多少钱 内部消息告诉你怎么避坑

保定电工证考试多少钱 内部消息告诉你怎么避坑 不知道去哪报名怕被中介坑?保定电工证考试多少钱?这是很多准备考电工证的工友最关心的问题。尤其是在当前监管日趋严格的背景下,很多人在报名时都担心被坑,花冤枉钱、走弯路。其实,只要你掌握好内部消息,…

2026/11/11 12:42:59

电工证丢失还能补吗?千万别踩坑,丢了证等于失业

电工证丢失还能补吗?千万别踩坑,丢了证等于失业 你正在找工作,但手里的电工证突然丢了,这下怎么办?别急,先别慌, 电工证丢失还能补吗 ?答案是肯定的,但 千万别踩坑 ,补办流程如果不了解,可能会耽误你上岗、甚至影响到你的收入。…

2026/11/11 0:02:26

考低压电工证通过率考试真题与备考技巧

低压电工证通过率高不高?学历不高也能考,值不值得考? 你是不是总听说电工证能帮你找高薪工作,但又担心自己学历不够,考不上?其实,低压电工证考试门槛并没有你想象中那么高,关键是方法对不对。这篇文章就告诉你, 考低压电工证通过率到底有多高 ,…

2026/11/11 0:02:26

低压电工证学时千万别踩坑,濮阳毕业生怎么避坑报名

低压电工证学时千万别踩坑,濮阳毕业生怎么避坑报名 你是不是也和我一样,刚毕业就听说低压电工证学时必须达标才能上岗?可一打听,发现报名机构五花八门,价格参差不齐, 不知道去哪报名怕被中介坑…

2026/11/10 20:08:15

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/10 10:29:37

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑