事件订阅
用户可以订阅SDK上抛的事件,来实现p2p通话、多人通话等流程。
初始注册事件监听
在初始化音视频通话之后, 在进行音视频通话之前, 请先注册监听一些音视频通话通知事件, 基本上所有的音视频通话操作都是异步的, 而且这些操作会触发音视频通话的某些事件, 具体事件会在各个操作里面详细介绍.
同步完成通知
- API 介绍
- 完成音视频连接后,音视频服务器同步过来的房间信息,里面包含已经处于房间内的用户信息。
- 示例
netcall.on('syncDone', (obj) => {
// obj => {code,errmsg,userlist:[{account, mode, pusher_secret, scene, uid,url}]}
console.log('同步成功', obj)
// obj中包含房间内的用户信息,可以从中拿出推拉流地址,设置为live-pusher或live-player的推拉流组件中
})
- 参数说明 obj 为收到的呼叫通知内容对象
obj 属性 | 类型 | 说明 |
---|---|---|
code | number | 同步状态码,200表示成功 |
errmsg | string | 错误信息 |
userlist | array | 已经在房间中的用户对象数组,每个用户对象中包含 用户账号信息:account 通话模式:mode 场景值:scene 用户唯一ID:uid rtmp地址:url |
被叫收到呼叫的通知
- API 介绍
- 主叫发起通话请求后,被叫将收到呼叫通知,这时开发者可以依据一些自己的逻辑进行状态判断是否展示对应的 UI 和响应按钮
- 示例
let infoOfBeCalled = null
netcall.on('beCalling', (obj) => {
console.log('beCalling')
console.log(obj)
infoOfBeCalled = obj
})
- 参数说明 obj 为收到的呼叫通知内容对象
obj 属性 | 类型 | 说明 |
---|---|---|
caller | string | 主叫 account |
type | number | 主叫发起的通话类型(音频还是视频) |
cid | string | 此通通话的唯一 ID 值,开发者可用于判断是否是同一通呼叫 |
主叫收到被叫接受的通知
API 介绍
- 主叫收到该通知后,可以开启 音视频连接
示例
// 被叫接受的通知
netcall.on('callAccepted', function(obj) {
console.log('on callAccepted', obj);
// 如果呼叫之前,启动了超时倒计时,这里可以取消呼叫倒计时
clearCallTimer();
// 可以开启音视频连接操作。。。
});
- 参数说明
obj 为呼叫应答的回调通知对象
obj 属性 | 类型 | 说明 |
---|---|---|
account | string | 被叫账号 |
type | number | 音视频呼叫类型:音频、视频 |
主叫收到被叫拒绝的通知
API 介绍
- 被叫拒绝通话后,主叫会收到该通知,此时主叫就应该做如下一系列
- 停止呼叫计时器
- 清空各种呼叫状态
- 被叫拒绝通话后,主叫会收到该通知,此时主叫就应该做如下一系列
示例
// 被叫拒绝的通知
netcall.on('callRejected', function(obj) {
console.log('被叫拒绝了', obj);
// 清除呼叫定时器
clearCallTimer();
// 清除用户UI逻辑(例如清除呼叫界面)
});
- 参数说明
obj 为呼叫应答的回调通知对象
obj 属性 | 类型 | 说明 |
---|---|---|
account | string | 被叫账号 |
type | number | 音视频呼叫类型 |
cid | number | 本通通话的唯一房间ID |
通话中收到远端的控制指令
API 介绍
- 通话过程中,可以通过监听该通知接口来接收各种通话指令的通知,做出相应处理
示例
netcall.on('control', function(obj) {
console.log('收到指令', obj);
});
- 参数说明
obj 为指令通知对象
param 属性 | 类型 | 说明 |
---|---|---|
account | string | 账号 |
cid | number | 需要发送指令的房间 id |
command | number | 指令类型,具体值请参照这里 |
收到挂断通知
- API 介绍
- 点对点通话过程中,当对方挂断通话时,己方会立即收到对方挂断的通知,这时己方需要挂断通话,并做相应的清理工作
- 示例
// 对方收到挂断通知
netcallInstance.on('hangup', (obj) => {
console.log('hangup--对端挂断了', obj)
// 判断收到的挂断通知是否是本通通话
if (obj.cid !== this.loginUser.cid) {
console.warn('非本通通话,抛弃')
return
}
// 清除对应的UI逻辑。。。
})
- 参数说明
obj 收到的挂断通知对象
obj 属性 | 类型 | 说明 |
---|---|---|
timetag | string | 时间戳 |
cid | string | 当前通话的唯一 id 值 |
account | string | 对方账号 |
其他端已处理的通知
- API 介绍
- 当收到呼叫时,如果账号存在多端登录的情况并且其他端已经对该通呼叫做了应答,这时 Web 端回到提示通知:已被其他端处理
- 示例
netcall.on('callerAckSync', function(obj) {
console.log('其他端已经处理了本通通话', obj);
});
- 参数说明
obj 为其他端已处理的回调对象
obj 属性 | 类型 | 说明 |
---|---|---|
timetag | string | 时间戳 |
cid | string | 当前通话的唯一 id 值 |
type | number | 通话类型:音频、视频 |
accepted | bool | 其他端做出的应答:接受、拒绝 |
fromClientType | string | 从什么类型的终端做出的应答:IOS、Android 等 |
媒体层有人加入通知
- API 介绍
- 当已经处于房间中后,如果收到此通知,表明媒体网关收到房间内的其他用户的媒体流数据,此通知会下发该用户的拉流地址(点对点和多人均会收到此通知)。
- 此时您应该创建一个
live-player
进行拉流,并将此地址设置到live-player
组件中,进行拉流查看。
- 示例
netcall.on('clientJoin', function(obj) {
// {cid,account,uid,url,mode}
console.log('媒体网关收到用户媒体数据', obj);
});
- 参数说明
obj 为其他端已处理的回调对象
obj 属性 | 类型 | 说明 |
---|---|---|
account | string | IM账号信息 |
cid | number | 当前通话的唯一 id 值 |
uid | number | IM账号对应的用户ID |
url | string | rtmp拉流地址 |
mode | number | 房间通话类型,0音视频,1纯音频,2纯视频,3静默 |
媒体层有人离开通知
- API 介绍
- 表明房间中有人离开了,此时建议停止拉流,并经
live-player
组件从页面中移除
- 表明房间中有人离开了,此时建议停止拉流,并经
- 示例
netcall.on('clientLeave', function(obj) {
// {cid,account,uid}
console.log('用户离开了', obj);
});
- 参数说明
obj 为其他端已处理的回调对象
obj 属性 | 类型 | 说明 |
---|---|---|
account | string | IM账号信息 |
cid | number | 当前通话的唯一 id 值 |
uid | number | IM账号对应的用户ID |
信令层用户加入房间通知
API 介绍
- 多人通话中,加入多人房间后,如果有用户加入了当前房间,当前房间中的所有人都会收到该通知
- 与
clientJoin
的区别为,本通知仅仅是信令层通知,通知回包数据中不包含拉流地址,后者会有拉流地址
示例
netcall.on('joinChannel', function(obj) {
// 仅仅知道加入用户的 uid、cid信息,此时可以做些界面的操作,
// 例如提前创建拉流组件并进行布局等待媒体网关收到后即可开始拉流
});
- 参数说明
obj 为通知消息对象
obj 属性 | 类型 | 说明 |
---|---|---|
account | string | 新加入同伴的账户 |
uid | number | 新加入同伴的 uid |
cid | number | 加入的房间 id |
被踢通知
API 介绍
- 你被管理员用户从房间中踢出,注意,如果管理员不解禁你,你无法再次加入此房间
示例
netcall.on('kicked', function() {
// 被踢了建议清除内部数据
netcall.destroy()
// 清除上层UI逻辑
});
连接关闭通知
API 介绍
- 收到此通知,表明音视频连接已经意外被关闭了,建议执行销毁逻辑,重新加入
示例
netcall.on('close', function() {
console.log('连接意外关闭了')
// 被踢了建议清除内部数据
netcall.destroy()
// 清除上层UI逻辑
});
sdk内部消息通知
- API 介绍
- sdk内部出现错误或者服务器反馈一些通知(无法继续进行通话)时,会触发该回调通知事件,这时开发者可以根据需要调用方法获取信息
- 示例
netcall.on('error', function(obj) {
console.log('sdk反馈错误信息', obj);
});
- 参数说明
obj 反馈的消息对象
属性 | 类型 | 说明 |
---|---|---|
code | number | 错误码 |
desc | string | 错误信息描述 |
本篇文档内容是否对您有帮助?
有帮助
我要吐槽
此文档对你是否有帮助
×
有帮助
我要吐槽
×