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

发布时间:2026/9/12 21:16:04

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/9/12 21:16:04

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/9/12 21:11:04

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

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

2026/9/12 22:21:08

CNN注意力机制详解:Matlab实现与调参实战

简介:基于注意力机制的卷积神经网络(CNN-attention)数据分类Matlab实现,面向计算机、电子信息工程、数学等专业学生,可用于课程设计、期末大作业与毕业设计,帮助掌握注意力机制与深度学习建模方法。资源共6…

2026/9/12 22:21:08

基于SwinTransformer与DCA注意力的面料多分类实战

简介:这是一份基于SwinTransformer与DCA注意力改进的5种基础面料多分类实战项目,面向希望系统掌握图像分类流程的PyTorch初学者与研究者。资源共1978个文件,含1969张jpg面料图像、4个Python脚本、3个pyc缓存文件、1份docx项目说明书及若干配置…

2026/9/12 22:21:08

iOS端PaddleOCR部署指南:选型、集成与性能调优

简介:面向iOS开发者的Paddle OCR移动端文字识别完整工程资源,解决在扫描文档、图片及现实场景中高效提取文字的需求。资源涵盖模型转换、Core ML集成、Swift/Objective-C识别代码及性能优化等全流程实现,适合需要低成本接入中文/英文识别能力…

2026/9/12 22:21:08

鲸鱼算法WOA优化GRU超参数:Matlab回归预测实战

简介:这套资源是针对多输入单输出数据回归预测场景的WOA-GRU完整Matlab实现,以鲸鱼算法优化门控循环单元的超参数,适合电气、经济、工程等领域的预测建模学习者与科研人员。程序已在Matlab 2020及以上版本环境设计,包含主优化程序…

2026/9/12 22:16:08

Servlet+JSP+JDBC房屋租赁系统实战解析

简介:本资源是一套完整的Java Web毕业设计实战项目——基于ServletJSPJDBC开发的房屋租赁管理系统,面向计算机专业本科生、Java初学者及毕设需求者,解决从零搭建企业级Web应用、理解MVC分层架构与数据库交互的核心实践问题。压缩包为ZIP格式&…

2026/9/12 2:05:33

超人会飞不算本事:系统稳定依赖清晰规则与边界设计

开头先不绕弯子。“#斯坦李吐槽dc 所以超人是无缘无故会飞的嘛哈哈哈哈哈哈哈锤哥真是技术人才啊!#雷神 #复联”这类调侃式短标题,第一波冲击力在于它把两个宇宙的角色塞进同一个吐槽箱里,但细想一下就能发现,它真正碰到的根本不是…

2026/9/12 3:55:12

超人VS蜘蛛侠:拆解超级IP的影响力与传播方法论

把“蜘蛛侠 vs 超人”放在 CSDN 上聊,可能很多人第一反应是走错片场了。但如果把这两个角色看成“两个持续运营了 80 多年的文化产品”,你会发现,这场比较本质上是两个不同 IP 策略的长期结果对比:超人赢在定义了整个超级英雄题材…

2026/9/12 10:09:03

基于CNN的调制信号识别:MATLAB实现时频图分类实战

简介:本资源是一套面向通信工程与信号处理方向学习者、研究者的深度学习实践方案,聚焦调制信号自动检测与识别这一典型无线通信任务,解决传统方法依赖人工特征、低信噪比下性能下降等痛点。压缩包共12个文件(10.73MB)&…

2026/9/12 0:04:17

MATLAB仿生优化框架:长鼻浣熊算法多策略融合实现

简介:本资源是一份面向智能优化算法研究者与MATLAB初学者的仿生智能算法实践代码包,聚焦于长鼻浣熊优化算法(COA)的多策略改进与性能验证。针对传统COA易陷局部最优、收敛精度不足等问题,作者融合Circle映射初始化提升…

2026/9/12 0:04:17

【JAVA毕设源码分享】基于 JavaWeb 的校园一卡通管理系统的设计与实现 基于 JavaWeb 的校园卡业务管理系统(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/9/12 0:04:17

【JAVA毕设源码分享】基于 Java 的图书馆借阅管理平台的搭建与实现 基于 Java 的图书馆综合管理系统(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/9/12 6:29:36

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/12 14:32:17

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/12 6:37:43

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

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

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

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