McuClient_v.1.0.3_API.md 18.3 KB

McuClient API参考说明


##McuClient 目录 ##

  • 创建McuClient对象

  • McuClient接口

  • McuClient回调事件

  • ErrorCode 错误码查询


##使用步骤说明 ##

  1. 创建McuClient对象
  2. McuClient初始化init
  3. 添加MessageTypes中的事件监听(接收各个模块的消息)
  4. McuClient加入会议
  5. 加入会议成功之后可以调用其他接口和监听事件

##创建McuClient对象 ## 只创建一次

示例代码

window.onload=function(){
    //创建client,这是必须的第一步
    const client=MCUClientEngine.createMcuClient();
    //获取事件监听消息定义
    const MessageTypes=MCUClientEngine.MessageTypes;
}

McuClient接口

初始化

client.init (paramInfo,onSuccess,mcuErrorEventHandler)

client创建完成之后第一步需要初始化。

示例代码

var paramInfo={ 
    "meetingNumber":123456,
    "portal":"127.0.0.1:80",
    "usertRole":"normal",
    "userID":0,
};
//初始化
client.init(paramInfo,onSuccess,mcuErrorEventHandler);
function onSuccess(callbackData){
    //初始化成功回调
    /*{
    "siteId": "h5test",
    "passwordRequired": true,
    "md5": "de399d5540b3da2fbc1eb0a770d4fd66",
    "code": 0,
    "msType": 1
    }*/
};
function mcuErrorEventHandler(callbackData){
    //整个MCUClient中Error异常监听
    //返回值callbackData的结构为{"code":errorCode,"reson":""}
    //errorCode的列表在文档最后面的 ErrorCode错误码查询
};

参数名称

类型

该对象包含以下属性

paramInfo

对象

  • meetingNumber:(必选)Number 课堂号
  • portal:(必选)String IP地址
  • usertRole:(可选) String 用户的身份,5种类型,默认是normal ;host(主持人/老师)、presenter(主讲人)、assistant(助教)、normal(普通角色/学生),record(暂时没用)
  • userId:(可选) String 第三方用户id,默认是0

onSuccess

Function

(必选) Function 初始化成功回调函数,返回值:{"siteId":"h5test","passwordRequired":true,"md5":"de399d5540b3da2fbc1eb0a770d4fd66","code":0,"msType":1}

mcuErrorEventHandler

Function

(必选) Function 整个MCUClient中Error异常监听
### 加入会议 ### #### client.joinClass (paramInfo,onSuccess) #### client初始化成功之后,加入会议。 示例代码 var paramInfo={ "userName":"大名",//自己的名字,在列表中显示 "password":"123321",//课堂密码,如果设置了密码需要验证 }; //加入会议 client.joinClass(paramInfo,onSuccess); function onSuccess(callbackData){ //加入会议成功回调 /*{ "siteId": "h5test", "confId": 1292388778, "h5Module": 0, "nodeId": 1484789938, "topNodeID": 101, "userRole": "normal", "role": 1, "isHost": false, "classRole": 0, "userId": "0", "userName": "cccccc", "password": "222222", "userType": 8, "passwordRequired": true, "md5": "b36da144521b70d89e72993cd1117b5b", "msType": 1, "portal": "112.126.80.182:80", "mcuDelay": 3000, "MCUServerIP": "123.56.73.119", "MCUServerPort": "7001", "maxVideoChannels": 1, "maxAudioChannels": 1, "maxMediaChannels": 2 }*/ };

参数名称

类型

该对象包含以下属性

paramInfo

对象

  • userName:(必选)String 进入课堂的名字
  • password:(可选)String 进入课堂的密码,如果课堂不设置密码就不需要,设置了密码的情况下,进入课堂需要输入密码,根据初始化回调的参数passwordRequired来判断

onSuccess

Function

(必选) Function 成功回调函数
### 离开会议 ### #### client.leaveClass() #### 离开会议 ### 获取当前的状态 ### #### client.mcuClientStatus() #### 获取当前的状态 示例代码 var callbackData=client.mcuClientStatus(); //返回一个对象 //{code:0,message:"XXXXXX"}

参数名称

类型

该对象包含以下属性

callbackData

对象

  • code:Number
  • 0 //SDK 未初始化 1 //未加入会议 2 //已经加入会议 3 //已经离开会议 4 //未知状态
  • message:String 状态的描述,对应code,默认为空
### 发送消息 ### #### client.sendChatMsg(paramInfo) #### 发送聊天消息 示例代码 var paramInfo={ "message":"需要发送的内容", "to":0 }; client.sendChatMsg(paramInfo);

参数名称

类型

该对象包含以下属性

paramInfo

对象

  • message:(必选)String 消息内容
  • to:(可选) Number 接收消息的人的ID,默认值是0(所有人都)
### 添加白板内容 ### #### client.sendInsertAnnotaion(paramInfo) #### 添加白板内容,可以添加任意线段、直线、矩形、圆形、文本等等内容。下面的代码中将分别演示添加(任意线段、直线、矩形、圆形、文本)内容时调用接口所要传入的参数。 示例代码 1. 添加线段(不规则); var paramInfo={ "type": 0, "pointGroup": [{"w":10,"h":20},{"w":11,"h":21},{"w":12,"h":22}],//有多个坐标点组成 "color": "#000000", "thickness": 1 }; client.sendInsertAnnotaion(paramInfo); 2. 添加直线; var paramInfo={ "type": 1, "pointGroup": [{"w":10,"h":20},{"w":60,"h":70}],//只有两个坐标点 [起点,终点] "color": "#000000", "thickness": 1 }; client.sendInsertAnnotaion(paramInfo); 3. 添加矩形; var paramInfo={ "type": 2, "pointGroup": [{"w":10,"h":10},{"w":60,"h":60}],//矩形对角线 [对角线坐标点1,对角线坐标点2] "color": "#000000", "thickness": 1 }; client.sendInsertAnnotaion(paramInfo); 4. 添加圆形; var paramInfo={ "type": 3, "pointGroup": [{"w":50,"h":50}],//只有一个坐标点[圆的中心坐标] "color": "#000000", "thickness": 1, "radius": 20 }; client.sendInsertAnnotaion(paramInfo); 5. 添加文本; var paramInfo={ "type": 4, "pointGroup": [{"w":10,"h":20}],//只有一个坐标点[文本的左上角坐标] "color": "#000000", "fontSize": 14, "fontName": "", "text":"文本的内容" }; client.sendInsertAnnotaion(paramInfo);

参数名称

类型

该对象包含以下属性

paramInfo

对象

  • type:(必选)Number
  • 0 (线段), 1 (直线), 2(矩形), 3(圆形), 4(文本)
  • pointGroup:(必选)array[{"w":w,"h":h}] 画布上的坐标点对象集合数组,数组中坐标点对象的数量根据type的类型而定,上面有示例代码
  • text:(文本必选)String 文本的内容,这个属性只有在type类型为文本的时候使用,其它类型的情况下不使用
  • radius:(绘制圆形必选)Number 圆的半径(按画布宽度百分比计算),这个只在绘制圆的时候使用,其他type的时候不使用,这个值是一个相对画布宽度大小的百分比,比如在画布宽度为400,要绘制一个半径为40的圆,计算的百分比值=40/400=10%,那么radius=10
  • color:(可选)String 颜色值,默认为"#000000"
  • thickness:(可选)Number 线条的粗细度,除了文本之外的图像都有线条粗细,默认值为1
  • fontSize:(可选)Number 文本的字体大小,默认值为14,这个属性只有在type类型为文本的时候使用,其它类型的情况下不使用
  • fontName:(可选)String 文本字体,默认值为null,这个属性只有在type类型为文本的时候使用,其它类型的情况下不使用

删除指定白板内容

client.sendDeleteAnnotaion(paramInfo)

删除已有的白板内容,每一次插入的白板内容都有一个唯一的itemIdx标识,需要删除指定的白板内容,参数传递itemIdx即可。

示例代码

    //下列代码为删除itemIdx标识为12222的白板内容

    var paramInfo={
        "itemIdx": 12222 
    };
    client.sendDeleteAnnotaion(paramInfo);

参数名称

类型

该对象包含以下属性

paramInfo

对象

  • itemIdx:(必选)Number
  • 白板内容的itemIdx标识,需要删除指定的白板内容,参数传递itemIdx即可。

McuClient 回调事件

会议日志信息 事件回调

示例代码

client.on(MessageTypes.CLASS_SHOW_DETAIL, function(callbackData){

    //返回值
    /*{
        "repeatmonthweekweek": 0,
        "endmode": 0,
        "repeatweek": "",
        "endcount": 1,
        "errorCode": 0,
        "cycle": 0,
        "repeatmonthday": 0,
        "frequency": 1,
        "repeatday": 0,
        "meetingName": "mcuClient",
        "repeatmode": 0,
        "finalenddate": "",
        "meetingContent": "",
        "beginTime": "2017-01-16 13:00:00",
        "endTime": "2017-01-31 15:00:00",
        "monthType": 0,
        "category": "",
        "repeatmonthweekday": 0,
        "status": 1
    }*/
});

会议有人加入事件回调

示例代码

 client.on(MessageTypes.CLASS_INSERT_ROSTER,function(callbackData){
    //返回值
    /*{
        "nodeId": 1483947664,
        "nodeData": {
            "nodeId": 1483947664,
            "name": "cccccc",
            "role": 1,
            "level": 0,
            "audioRecords": [],
            "videoRecords": [],
            "status": null,
            "userData": {
                "qq": "",
                "skype": "",
                "mobile": ""
            },
            "userId": "0",
            "handUpTime": null,
            "deviceType": 3,
            "mobileDirection": null
        }
    }*/
});

会议有人离开 事件回调

示例代码

 client.on(MessageTypes.CLASS_DELETE_ROSTER,function(callbackData){
    //{"nodeId":1234}
});

关闭会议 事件回调

示例代码

client.on(MessageTypes.CLASS_EXIT, function(callbackData){
    //.....
});

收到聊天消息 事件回调

示例代码

client.on(MessageTypes.CHAT_RECEIVE, function(callbackData){
    //返回值
    /*{
        "fromNodeID": 1484207995,
        "toNodeID": 0,
        "message": "消息内容",
        "fromName": "发送消息人的名字",
        "fromRole": 0
    }*/
});

白板插入内容 事件回调

示例代码

client.on(MessageTypes.WHITEBOARD_ANNOTAION_INSERT, function(callbackData){
    //.....
});

白板删除内容 事件回调

示例代码

client.on(MessageTypes.WHITEBOARD_ANNOTAION_DELETE, function(callbackData){
    //.....
});

视频显示 事件回调

示例代码

client.on(MessageTypes.VIDEO_RECEIVE, function(callbackData){
    //.....
});

文档 事件回调

示例代码

client.on(MessageTypes.DOC_SHOW, function(callbackData){
    //.....
});

文档笔记 事件回调

示例代码

client.on(MessageTypes.DOC_ANNOTATION,function(callbackData){
    //.....
});

删除文档 事件回调

示例代码

 client.on(MessageTypes.DOC_DEL,function(callbackData){
    //.....
});

ErrorCode 错误码查询

错误代码

值(code)

描述(reson)

ERR_CLASS_INIT_PAEAM 100

初始化参数错误

ERR_CLASS_INIT_NETWORK 101

初始化网络错误

ERR_CLASS_INIT_PROTOCOL 102

初始化协议错误

ERR_CLASS_INIT_FAILED 103

初始化验证失败

ERR_CLASS_JOIN_NETWORK 200

加入会议网络错误

ERR_CLASS_JOIN_PROTOCOL 201

加入会议化协议错误

ERR_CLASS_JOIN_FAILED 202

加入会议化异常错误

ERR_CLASS_JOIN_PARAM 203

加入会议参数错误

ERR_CLASS_JOIN_FULL 204

人数已满

ERR_CLASS_MD5_WRONG 205

MD5验证失败

ERR_CLASS_PASSWORD_WRONG 206

密码错误

ERR_CLASS_JOIN_CONFILICT 207

已经在其它地方登陆

ERR_GET_CLASS_DETAIL 300

获取classDetail失败

ERR_GET_MEETING_PARAML 301

获取MeetingParam失败

ERR_NETWORK 10000

网络错误

ERR_UNKNOWN 10001

未知错误

ERR_SOCKET_DISCONNECT 20000

MCU断开连接,已经离开会议