音视频信令概览
商业版通话邀请、房间凭据、事件和 AV Runtime 的职责边界。
本节全部能力属于商业版,要求商业版 OpenIMServer 信令服务。unix-openim-sdk 提供发起邀请、接受、拒绝、取消、挂断、查询房间和同步通话状态所需的信令 API。它负责协调参与者、房间信息和通话生命周期,不负责采集摄像头画面、播放远端媒体流或渲染通话界面。
应用需要把返回的 roomID、token 和 liveURL 交给所选的实时音视频媒体引擎,并自行处理设备权限、媒体轨道、弱网策略和界面状态。信令 API 不是一套完整的 WebRTC 媒体 SDK。需要完整通话与会议 UI 时,可另行集成 openim-av-runtime;AV Runtime 复用本插件的唯一登录态,不初始化第二套 OpenIM Core。
通话流程
- 应用登录 IM 并注册全部信令事件,调用
signalingInvite()商业版 发起单聊通话,或调用signalingInviteInGroup()发起群聊通话。 - 被邀请方从
onReceiveNewInvitation商业版 获取 raw JSON 邀请,校验并映射为OpenIMSignalingInvitationInfo后展示来电。 - 接受方先申请媒体权限,再调用
signalingAccept();拒绝则调用signalingReject()。 - 双方使用返回的
roomID、token和liveURL接入媒体引擎。 - 通话过程中根据参与者、媒体流和自定义信令事件更新本地状态。
- 发起方可以取消尚未接通的邀请;任一参与者都可以挂断已经建立的通话。
核心数据
| 数据 | 说明 |
|---|---|
OpenIMSignalingInvitationInfo | 邀请人、被邀请人、群组、房间、媒体类型、超时时间和会话类型。 |
OpenIMSignalingInviteResult | OpenIMServer 返回的 roomID、token、liveURL 和忙线用户列表。 |
OpenIMSignalingAcceptResult、OpenIMSignalingGetTokenByRoomIDResult | 接受邀请或重新获取 Token 时返回的媒体房间凭据。 |
OpenIMSignalingGetRoomByGroupIDResult | 按群组查询到的 roomID 和原始邀请快照。 |
customData 和自定义信令只适合传递业务可公开的协商信息。不要在其中写入长期凭据、管理员密钥或其他敏感数据。
状态更新与事件归属
发起、接受、拒绝、取消和挂断等写操作需要分别处理 API 的 Promise 结果与通话事件。Promise 成功表示 OpenIMServer 已接受或完成当前信令请求;事件反映邀请方、被邀请方、其他设备或房间参与者看到的增量状态,两者不是同一个完成信号。
信令事件参数是 raw JSON 字符串,必须先校验再进入应用状态。邀请生命周期、成员进出房间、挂断和媒体流变化的完整监听统一见通话事件;自定义信令事件见发送自定义信令。查询房间、重新获取 Token 和恢复待处理邀请只通过 Promise 返回调用时的快照。
概览页不注册事件处理器。通话状态以 roomID 为主键,参与者状态还要结合用户 ID;重新登录后的通话变化由事件同步,需要显示当前房间快照时再查询房间信息。
按任务查找页面
| 任务 | 页面 |
|---|---|
| 发起单聊或群聊通话 | 发起单聊通话、发起群聊通话 |
| 接受或拒绝邀请 | 接受通话、拒绝通话 |
| 取消邀请或挂断通话 | 取消通话邀请、挂断通话 |
| 恢复房间或待处理邀请 | 查询群组通话房间、获取通话房间 Token、恢复待处理的通话邀请 |
| 处理通话事件和业务协商 | 通话事件、发送自定义信令 |
同一账号/运行时只维护一个活动通话或会议。Token、liveURL 和 raw 信令 payload 不写日志或持久化。
这个页面有帮助吗?