Web排麦组件化

优质
小牛编辑
132浏览
2023-12-01

1.1 组件引入

需使用特定场景连麦模式,可在线引用排麦插件
<script src="https://class.csslcloud.net/static/dist/js/classMode.js"></script>

1.2 排麦插件包含功能

功能描述
多中连麦模式支持自定义多种连麦场景(自由、举手、自动)

2.1 举手连麦

  1. 学生可举手申请连麦,需老师确认才可连麦
  2. 老师可以邀请学生连麦,需学生同意才可连麦

举手连麦时序图

Image text

2.2 自由连麦

  1. 学生可自由连麦,无需老师确认

自由连麦时序图

Image text

2.3 自动连麦

  1. 学生进入房间后自动连麦

自动连麦时序图

Image text

2.1 学生举手

举手由学生端发起。

应用模式:举手连麦,自由连麦,自动连麦。

rtc.handsUp(object);

object 参数说明:

参数名称参数类型说明是否必须
successfunction成功回调(含参数)可选
failfunction失败回调(含参数)可选

使用例子:

rtc.handsUp({
    success: function(str){
        console.log('举手成功', str);
    },
    fail: function(data){
        console.log('举手失败',data);
    }
});

2.2 取消排麦

取消排麦由学生端发起。

应用模式:举手连麦,自由连麦,自动连麦。

rtc.handsUpCancel(object);

object 参数说明:

参数名称参数类型说明是否必须
uidstring取消排麦用户id必选
successfunction成功回调(含参数)可选
failfunction失败回调(含参数)可选

使用例子:

rtc.handsUpCancel({
    uid:"23eb6474924f4b28b97ef42cb59676bc",
    success: function(str){
        console.log('取消排麦成功', str);
    },
    fail: function(data){
        console.log('取消排麦失败',data);
    }
});

2.3 下麦操作

老师和学生都能发起下麦,被下麦角色是学生,该方法才能生效。

应用模式:举手连麦,自由连麦,自动连麦。

rtc.handsDown(object);

object 参数说明:

参数名称参数类型说明是否必须
uidstring被下麦用户id必选
teacher_idstring老师id可选
successfunction成功回调(含参数)可选
failfunction失败回调(含参数)可选

使用例子:

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 参数说明:

参数名称参数类型说明是否必须
uidstring被邀请用户id必选
successfunction成功回调(含参数)可选
failfunction失败回调(含参数)可选

使用例子:

rtc.invite({
    uid:"23eb6474924f4b28b97ef42cb59676bc",
    success: function(str){
        console.log('邀请上麦成功', str);
    },
    fail: function(data){
        console.log('邀请上麦失败',data);
    }
});

2.5 同意上麦

老师端同意学生上麦请求。

应用模式:举手连麦

rtc.certain(object);

object 参数说明:

参数名称参数类型说明是否必须
uidstring同意上麦用户id必选
successfunction成功回调(含参数)可选
failfunction失败回调(含参数)可选

使用例子:

rtc.certain({
    uid:"23eb6474924f4b28b97ef42cb59676bc",
    success: function(str){
        console.log('同意上麦成功', str);
    },
    fail: function(data){
        console.log('同意上麦失败',data);
    }
});

2.6 接受邀请

学生端接受老师的上麦邀请,同意上麦。

应用模式:举手连麦

rtc.inviteAccept(object);

object 参数说明:

参数名称参数类型说明是否必须
successfunction成功回调(含参数)可选
failfunction失败回调(含参数)可选

使用例子:

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 参数说明:

参数名称参数类型说明是否必须
pidnumber上麦结果更新status必选
stidstringstreamid可选
successfunction成功回调(含参数)可选
failfunction失败回调(含参数)可选
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 参数说明:

参数名称参数类型说明是否必须
ustring指定被锁定人id必选
tboolean是否锁定必选
successfunction成功回调(含参数)可选
failfunction失败回调(含参数)可选
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 参数说明:

参数名称参数类型说明是否必须
ustring指定被踢人id必选
successfunction成功回调(含参数)可选
failfunction失败回调(含参数)可选

使用例子:

rtc.outRoom({
    u:"f10f7885ab564183ad7fe47664f46973",
    success: function(str){
        console.log('踢出操作成功', str);
    },
    fail: function(data){
        console.log('踢出操作失败',data);
    }
});

2.10 助教上麦更新麦序

助教推流成功后,调用更新麦序方法成功后,其他人可以订阅到助教的流

rtc.assistantUp(object);

object 参数说明:

参数名称参数类型说明是否必须
streamIdstring助教流id必选
successfunction成功回调(含参数)可选
failfunction失败回调(含参数)可选

使用例子:

rtc.assistantUp({
    streamId:"455353543353453453454353453",
    success: function(data){
        console.log('操作成功', data);
    },
    fail: function(data){
        console.log('操作失败',data);
    }
});

2.11 助教下麦接口

助教或者讲师角色可将助教麦序更新为0,助教收到下麦通知后,应停止推流

rtc.assistantDown(object);

object 参数说明:

参数名称参数类型说明是否必须
useridstring助教的人员id必选
downBystring被其他人下麦的id(被讲师下麦,可填讲师id)可选
successfunction成功回调(含参数)可选
failfunction失败回调(含参数)可选

使用例子:

rtc.assistantDown({
    userid:"455353543353453453454353453",
    success: function(data){
        console.log('操作成功', data);
    },
    fail: function(data){
        console.log('操作失败',data);
    }
});

2.12 讲师下麦接口

助教或者讲师角色可将讲师麦序更新为0,讲师收到下麦通知后,应停止推流

rtc.teacherDown(object);

object 参数说明:

参数名称参数类型说明是否必须
useridstring讲师的人员id必选
downBystring被其他人下麦的id(被助教下麦,可填助教id)可选
successfunction成功回调(含参数)可选
failfunction失败回调(含参数)可选

使用例子:

rtc.teacherDown({
    userid:"455353543353453453454353453",
    success: function(data){
        console.log('操作成功', data);
    },
    fail: function(data){
        console.log('操作失败',data);
    }
});

2.13 讲师或助教预上麦接口

助教或讲师角色可以被别人(非自己)调用预上麦接口通知上麦,此时,收到预上麦通知后,应主动推流后更新麦序

rtc.teacherOrAssistantUp(object);

object 参数说明:

参数名称参数类型说明是否必须
useridstring讲师或助教的人员id必选
successfunction成功回调(含参数)可选
failfunction失败回调(含参数)可选

使用例子:

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