4.9 KiB
4.9 KiB
根据你提供的源码,其中包含多个控件(类)的定义。我们从中识别出以下三个注册的控件:
bricks.VideoBox—— 视频播放控件bricks.Signaling—— 信令管理类(非 UI 控件,但作为功能模块)bricks.RTCP2PConnect—— WebRTC 点对点连接管理类
按照你的要求:每个控件需以 Markdown 格式编写文档,一级标题为控件名称,包含“控件功能、类型、父类”,二级标题为“初始化参数”和“主要事件”。
⚠️ 注意:
Signaling和RTCP2PConnect是普通 JS 类,并非 UI 控件或继承自JsWidget,因此归类为“普通控件”;而VideoBox继承自JsWidget,属于 UI 控件。
VideoBox
控件功能:用于在页面中创建并管理 <video> 元素,支持设置音视频流(MediaStream),常用于本地或远程视频渲染。
类型:普通控件(UI 控件)
父类控件:bricks.JsWidget
初始化参数
无显式构造函数,调用 create() 方法时自动创建 DOM 元素并设置默认属性:
autoplay: true:自动播放muted: true:静音播放
主要事件
无自定义事件暴露,但内部使用原生 <video> 元素事件(如 play, pause 等)。提供以下方法供外部控制:
set_stream(stream):设置 MediaStream 到 video 元素get_stream():获取当前绑定的 MediaStream
Signaling
控件功能:实现 WebSocket 信令通道,用于登录、心跳、消息收发及会话管理,是 WebRTC 多端通信的核心协调模块。支持注册不同类型会话的消息处理器。
类型:普通控件(非 UI 模块)
父类控件:无(独立类)
初始化参数
| 参数 | 类型 | 说明 |
|---|---|---|
signaling_url |
String | WebSocket 服务地址 |
info |
Object | 当前客户端身份信息(如用户ID等),随每条消息发送 |
connect_opts |
Object | 连接选项,传递给会话处理器 |
onclose |
Function | WebSocket 关闭时回调 |
onlogin |
Function | 登录成功后返回在线用户列表时触发 |
onopen |
Function | WebSocket 打开时回调(可选) |
heartbeat_period |
Number | 心跳周期(秒),0 表示不启用 |
主要事件
通过 recvdata_handler 分发接收到的数据,关键消息类型如下:
online: 登录响应,包含当前在线用户列表new_session: 创建新会话请求- 自定义 sessiontype 消息:由
add_sessionhandler()注册的处理器处理
支持动态注册会话处理器:
add_sessionhandler(sessiontype, handlerClass):为特定会话类型注册处理器类add_handler(key, handler):为指定 sessionid 添加消息处理器
RTCP2PConnect
控件功能:封装 WebRTC 点对点连接逻辑,包括媒体流处理、数据通道、信令交互、ICE 协商等,实现音视频通话与数据传输。
类型:普通控件(通信模块)
父类控件:无(独立类)
初始化参数
| 参数 | 类型 | 说明 |
|---|---|---|
signaling |
Signaling 实例 | 上层信令实例,用于发送接收信令消息 |
session |
Object | 当前会话对象 {sessionid, sessiontype} |
opts |
Object | 配置项,结构如下: |
{
ice_servers: [], // STUN/TURN 服务器配置
peer_info: {}, // 对端信息(用于 callrequest)
auto_callaccept: true, // 是否自动接受呼叫
media_options: { // getUserMedia 参数
video: true,
audio: true
},
data_connect: true, // 是否建立 datachannel
on_pc_connected: Function, // PeerConnection 成功连接回调
on_pc_disconnected: Function, // PeerConnection 断开回调
on_dc_open: Function, // DataChannel 打开回调
on_dc_close: Function, // DataChannel 关闭回调
on_dc_message: Function // 收到 DataChannel 消息回调
}
主要事件
通过内置 handler 监听并响应以下信令消息类型:
sessioncreated:会话创建成功,启动连接流程callrequest:收到呼叫请求,若 auto_accept 则自动响应callaccepted:对方接受呼叫,开始 SDP 协商offer:收到 SDP Offer,回复 Answeranswer:收到 SDP Answer,完成协商icecandidate:收到 ICE 候选,添加到 PeerConnectionsessionquit:会话结束,关闭连接
其他运行时事件:
oniceconnectionstatechange:ICE 状态变化onconnectionstatechange:连接状态变化(connected/disconnected)ondatachannel/ontrack:远程数据通道或媒体轨道到达
✅ 总结说明:
VideoBox是可视化控件,用于展示视频流。Signaling是信令中枢,负责与服务器通信。RTCP2PConnect是 WebRTC 连接控制器,处理点对点连接全流程。
三者协同工作,构成完整的实时通信系统。