Web排麦组件化
1.1 组件引入
需使用特定场景连麦模式,可在线引用排麦插件
<script src="https://class.csslcloud.net/static/dist/js/classMode.js"></script>
1.2 排麦插件包含功能
功能 | 描述 |
---|---|
多中连麦模式支持 | 自定义多种连麦场景(自由、举手、自动) |
2.1 举手连麦
- 学生可举手申请连麦,需老师确认才可连麦
- 老师可以邀请学生连麦,需学生同意才可连麦
举手连麦时序图
2.2 自由连麦
- 学生可自由连麦,无需老师确认
自由连麦时序图
2.3 自动连麦
- 学生进入房间后自动连麦
自动连麦时序图
2.1 学生举手
举手由学生端发起。
应用模式:举手连麦,自由连麦,自动连麦。
rtc.handsUp(object);
object 参数说明:
参数名称 | 参数类型 | 说明 | 是否必须 |
---|---|---|---|
success | function | 成功回调(含参数) | 可选 |
fail | function | 失败回调(含参数) | 可选 |
使用例子:
rtc.handsUp({
success: function(str){
console.log('举手成功', str);
},
fail: function(data){
console.log('举手失败',data);
}
});
2.2 取消排麦
取消排麦由学生端发起。
应用模式:举手连麦,自由连麦,自动连麦。
rtc.handsUpCancel(object);
object 参数说明:
参数名称 | 参数类型 | 说明 | 是否必须 |
---|---|---|---|
uid | string | 取消排麦用户id | 必选 |
success | function | 成功回调(含参数) | 可选 |
fail | function | 失败回调(含参数) | 可选 |
使用例子:
rtc.handsUpCancel({
uid:"23eb6474924f4b28b97ef42cb59676bc",
success: function(str){
console.log('取消排麦成功', str);
},
fail: function(data){
console.log('取消排麦失败',data);
}
});
2.3 下麦操作
老师和学生都能发起下麦,被下麦角色是学生,该方法才能生效。
应用模式:举手连麦,自由连麦,自动连麦。
rtc.handsDown(object);
object 参数说明:
参数名称 | 参数类型 | 说明 | 是否必须 |
---|---|---|---|
uid | string | 被下麦用户id | 必选 |
teacher_id | string | 老师id | 可选 |
success | function | 成功回调(含参数) | 可选 |
fail | function | 失败回调(含参数) | 可选 |
使用例子:
rtc.handsDown({
uid:"23eb6474924f4b28b97ef42cb59676bc",
teacher_id:"f10f7885ab564183ad7fe47664f46973",
success: function(str){
console.log('下麦成功', str);
},
fail: function(data){
console.log('下麦失败',data);
}
});
2.4 邀请上麦
老师端发起邀请,邀请学生上麦。(举手模式)
应用模式:举手连麦。
rtc.invite(object);
object 参数说明:
参数名称 | 参数类型 | 说明 | 是否必须 |
---|---|---|---|
uid | string | 被邀请用户id | 必选 |
success | function | 成功回调(含参数) | 可选 |
fail | function | 失败回调(含参数) | 可选 |
使用例子:
rtc.invite({
uid:"23eb6474924f4b28b97ef42cb59676bc",
success: function(str){
console.log('邀请上麦成功', str);
},
fail: function(data){
console.log('邀请上麦失败',data);
}
});
2.5 同意上麦
老师端同意学生上麦请求。
应用模式:举手连麦
rtc.certain(object);
object 参数说明:
参数名称 | 参数类型 | 说明 | 是否必须 |
---|---|---|---|
uid | string | 同意上麦用户id | 必选 |
success | function | 成功回调(含参数) | 可选 |
fail | function | 失败回调(含参数) | 可选 |
使用例子:
rtc.certain({
uid:"23eb6474924f4b28b97ef42cb59676bc",
success: function(str){
console.log('同意上麦成功', str);
},
fail: function(data){
console.log('同意上麦失败',data);
}
});
2.6 接受邀请
学生端接受老师的上麦邀请,同意上麦。
应用模式:举手连麦
rtc.inviteAccept(object);
object 参数说明:
参数名称 | 参数类型 | 说明 | 是否必须 |
---|---|---|---|
success | function | 成功回调(含参数) | 可选 |
fail | function | 失败回调(含参数) | 可选 |
使用例子:
rtc.inviteAccept({
success: function(str){
console.log('接受邀请成功', str);
},
fail: function(data){
console.log('接受邀请失败',data);
}
});
2.7 上麦更新
上麦更新是在两种情况下执行
1.推流成功之后将自己的麦序更新为3;系统会广播 speak_context 事件,其他用户监听该事件后更新对应的业务展示状态;
2.不能创建本地流或者推流失败,更新自己的麦序为0。
可应用模式:举手连麦,自由连麦,自动连麦。
rtc.updateMcResult(object);
object 参数说明:
参数名称 | 参数类型 | 说明 | 是否必须 |
---|---|---|---|
pid | number | 上麦结果更新status | 必选 |
stid | string | streamid | 可选 |
success | function | 成功回调(含参数) | 可选 |
fail | function | 失败回调(含参数) | 可选 |
object:包含以下属性
* pid(必选)上麦结果更新status
0 推流失败/取消推流 学生不能创建本地流或者推流失败,需将其麦序让出。
1 推流成功 推流成功之后为更新自己上麦状态,通知其他人订阅,需调用。
* stid(可选)
推流成功传streamid
推流失败可不传
* success(可选)successed 成功回调
object.success = function(str){
// 上麦成功
}
* fail(可选)fail 失败回调
object.fail = function(data){
// 上麦失败
console.log(data);
}
值 | 状态 |
---|---|
0 | 未推流 |
1 | 申请推流 |
2 | 尝试推流 |
3 | 推流成功 |
使用例子:
rtc.updateMcResult({
pid:1,
stid:"146797406875915040",
success: function(str){
console.log('邀请上麦成功', str);
},
fail: function(data){
console.log('邀请上麦失败',data);
}
});
2.8 视频轮播
老师端确定锁定视频是否轮播。
应用模式:自动连麦
rtc.speakerRotateControl(object);
object 参数说明:
参数名称 | 参数类型 | 说明 | 是否必须 |
---|---|---|---|
u | string | 指定被锁定人id | 必选 |
t | boolean | 是否锁定 | 必选 |
success | function | 成功回调(含参数) | 可选 |
fail | function | 失败回调(含参数) | 可选 |
object:包含以下属性
* u(必选)老师端用户id
* t(必选)
true 锁定
false 解锁
* success(可选)successed 成功回调
object.success = function(str){
// 锁定视频是否轮播操作成功
}
* fail(可选)fail 失败回调
object.fail = function(data){
// 锁定视频是否轮播操作失败
console.log(data);
}
使用例子:
rtc.speakerRotateControl({
u:"f10f7885ab564183ad7fe47664f46973",
t:true,
success: function(str){
console.log('锁定视频是否轮播操作成功', str);
},
fail: function(data){
console.log('锁定视频是否轮播操作失败',data);
}
});
2.9 踢出房间
从房间里踢出学员。
应用模式:举手连麦,自由连麦,自动连麦。
rtc.outRoom(object);
object 参数说明:
参数名称 | 参数类型 | 说明 | 是否必须 |
---|---|---|---|
u | string | 指定被踢人id | 必选 |
success | function | 成功回调(含参数) | 可选 |
fail | function | 失败回调(含参数) | 可选 |
使用例子:
rtc.outRoom({
u:"f10f7885ab564183ad7fe47664f46973",
success: function(str){
console.log('踢出操作成功', str);
},
fail: function(data){
console.log('踢出操作失败',data);
}
});
2.10 助教上麦更新麦序
助教推流成功后,调用更新麦序方法成功后,其他人可以订阅到助教的流
rtc.assistantUp(object);
object 参数说明:
参数名称 | 参数类型 | 说明 | 是否必须 |
---|---|---|---|
streamId | string | 助教流id | 必选 |
success | function | 成功回调(含参数) | 可选 |
fail | function | 失败回调(含参数) | 可选 |
使用例子:
rtc.assistantUp({
streamId:"455353543353453453454353453",
success: function(data){
console.log('操作成功', data);
},
fail: function(data){
console.log('操作失败',data);
}
});
2.11 助教下麦接口
助教或者讲师角色可将助教麦序更新为0,助教收到下麦通知后,应停止推流
rtc.assistantDown(object);
object 参数说明:
参数名称 | 参数类型 | 说明 | 是否必须 |
---|---|---|---|
userid | string | 助教的人员id | 必选 |
downBy | string | 被其他人下麦的id(被讲师下麦,可填讲师id) | 可选 |
success | function | 成功回调(含参数) | 可选 |
fail | function | 失败回调(含参数) | 可选 |
使用例子:
rtc.assistantDown({
userid:"455353543353453453454353453",
success: function(data){
console.log('操作成功', data);
},
fail: function(data){
console.log('操作失败',data);
}
});
2.12 讲师下麦接口
助教或者讲师角色可将讲师麦序更新为0,讲师收到下麦通知后,应停止推流
rtc.teacherDown(object);
object 参数说明:
参数名称 | 参数类型 | 说明 | 是否必须 |
---|---|---|---|
userid | string | 讲师的人员id | 必选 |
downBy | string | 被其他人下麦的id(被助教下麦,可填助教id) | 可选 |
success | function | 成功回调(含参数) | 可选 |
fail | function | 失败回调(含参数) | 可选 |
使用例子:
rtc.teacherDown({
userid:"455353543353453453454353453",
success: function(data){
console.log('操作成功', data);
},
fail: function(data){
console.log('操作失败',data);
}
});
2.13 讲师或助教预上麦接口
助教或讲师角色可以被别人(非自己)调用预上麦接口通知上麦,此时,收到预上麦通知后,应主动推流后更新麦序
rtc.teacherOrAssistantUp(object);
object 参数说明:
参数名称 | 参数类型 | 说明 | 是否必须 |
---|---|---|---|
userid | string | 讲师或助教的人员id | 必选 |
success | function | 成功回调(含参数) | 可选 |
fail | function | 失败回调(含参数) | 可选 |
使用例子:
rtc.teacherOrAssistantUp({
userid:"455353543353453453454353453",
success: function(data){
console.log('操作成功', data);
},
fail: function(data){
console.log('操作失败',data);
}
});
3.1 监听有流可订阅事件
使用例子:
rtc.on('allow_sub', function(stream) {
// 订阅流
if(stream.isMixed()) {
console.log('是混合流,不定阅');
} else {
rtc.trySubscribeStream({
tryStream: stream,
success: function(stream) {
var streamId = stream.id(); // 获取流id
//将视频动态插入盒子中
var li = document.createElement('li');
li.setAttribute('id', streamId);
$('body').appendChild(li);
stream.show(streamId);
},
fail: function(err) {
console.log(err, 'error');
}
});
}
});
3.2 监听通知取消订阅事件
已订阅的流离开房间时,通知取消订阅的监听事件
使用例子:
rtc.on('unSub', function(stream) {
//停止订阅流
});
3.3 学生监听自己需要下麦事件
下麦成功后的监听事件
使用例子:
rtc.on('mcDown', function() {
// 关闭本地流
rtc.closeVideo({ //关闭本地流
streamName: 'main',
success: function() {
console.log('main:关闭本地流成功');
},
fail: function(str) {
console.log(str, 'error');
}
});
});
3.4 学生监听自己被允许上麦
自己被系统允许,需创建本地流
使用例子:
rtc.on('createLocalStream', function() {
// 创建本地流推流
});
3.5 监听自己被邀请事件
学生自己被邀请的监听事件
使用例子:
rtc.on('inviteUp', function(uid) {
console.log('被邀请的用户id为',uid)
});
3.6 监听到预上麦信号
在助教应用场景下,助教或讲师可能切换上麦,预上麦就是通知讲师或者助教被切换上麦了,需要推流
rtc.on('preLive' function(uid){
console.log(uid);
});
3.7 举手连麦模式下,学生举手通知
说明: 此方法需老师端监听
rtc.on("user_hand", function(id){
console.log(id);
});
// id为举手用户用户的id