李勇

1.统一错误异常的监听,应用层通过errorCode来处理不同的异常

2.Sass请求 中的fetch发送数据请求,在移动端的webView中,需要依赖下面两个来解决加载的问题
require('es6-promise').polyfill();
require('whatwg-fetch');

3.定义errorCode
此 diff 太大无法显示。
require('es6-promise').polyfill();
require('whatwg-fetch');
require('jquery-touchswipe');
require('string.fromcodepoint');
import Emiter from './Emiter';
import Sass from 'Sass';
import Mcu from 'mcu';
... ... @@ -11,6 +16,7 @@ import WhiteBoardApe from 'apes/WhiteBoardApe';
import EngineUtils from "EngineUtils";
import GlobalConfig from 'GlobalConfig';
let loger = Loger.getLoger('MessageEntrance');
let _sdkInfo={"version":"v.1.0.1","author":"www.3mang.com"};
... ... @@ -23,13 +29,15 @@ let _video_ape;
let _doc_ape;
let _wb_ape;
//init callBack function
//初始化成功回调函数
let _initSuccessCallBackFun;
let _initFailureCallBackFun;
//join callBack function
//加入会议成功回调函数
let _joinClassSuccessCallBackFun;
let _joinClassFailureCallBackFun;
//监听mcu所有错误异常回调函数
let _mcuErrorCallBackFun;
//MCUClient 外部实例化主类
export default class MessageEntrance extends Emiter {
... ... @@ -39,8 +47,10 @@ export default class MessageEntrance extends Emiter {
this.sdkInfo=_sdkInfo;
loger.log(this.sdkInfo);
this.on(MessageTypes.CLASS_INIT_FAILED,this._sassInitFailedHandler.bind(this));
this.on(MessageTypes.CLASS_JOIN_FAILED,this._joinClassFailureHandler.bind(this));
//初始化状态
GlobalConfig.setCurrentStatus(GlobalConfig.statusCode_0);
this.on(MessageTypes.MCU_ERROR,this._mcuErrorHandler.bind(this));
this.on(MessageTypes.DOC_SHOW, this.docShowHandler.bind(this));
// Sass平台层
... ... @@ -48,7 +58,7 @@ export default class MessageEntrance extends Emiter {
_sass.on('*', (type, data) => this._emit(type, data));
_sass.on(_sass.SUCCESS, this._sassVerifySuccessHandler.bind(this));
_sass.on(_sass.CLASS_INIT_SUCCESS, this._sassInitSuccessHandler.bind(this));
_sass.on(_sass.CLASS_INIT_FAILED, this._sassInitFailedHandler.bind(this));
_sass.on(_sass.CLASS_GET_CLASS_DETAIL, this._h5SassGetClassDetailSuccessHandler.bind(this));
_sass.on(_sass.CLASS_GET_MEETING_PARAM,this._h5SassGetMeetingParaSuccessHandler);
// 底层MCU消息层
... ... @@ -71,34 +81,52 @@ export default class MessageEntrance extends Emiter {
_doc_ape = new DocApe();
_doc_ape.on('*', (type, data) => this._emit(type, data));
_doc_ape.on(MessageTypes.DOC_UPDATE, this.docUpdateHandler.bind(this));
_doc_ape.on(MessageTypes.DOC_DEL, this.docDeleteHandler.bind(this));
_wb_ape = new WhiteBoardApe();
_wb_ape.on('*', (type, data) => this._emit(type, data));
_wb_ape.on(MessageTypes.ANNOTATION_UPDATE, this.annoUpdateHandler.bind(this));
//公开外部调用的方法
this.init=this._init;
this.joinClass=this._joinClass;
this.sendChatMsg=this._sendChatMsg;
this.setDebugData=this._setDebugData;
this.mcuClientStatus=this._mcuClientStatus;
}
//mcu异常监听
_mcuErrorHandler(_data){
if(_mcuErrorCallBackFun){
let errorMessage={"code":_data,"reson":""};
_mcuErrorCallBackFun(errorMessage);
}
}
_init(_param,_onSuccess,_onFailure){
_initSuccessCallBackFun=_onSuccess;
_initFailureCallBackFun=_onFailure;
//获取当前的状态
_mcuClientStatus(){
return GlobalConfig.getCurrentStatus();
}
//初始化
_init(_param,_onSuccess,_mcuErrorCallBack){
_initSuccessCallBackFun=_onSuccess;
// _initFailureCallBackFun=_onFailure;
_mcuErrorCallBackFun=_mcuErrorCallBack;
//{"meetingNumber":"1653304953","portal":"112.126.80.182:80","userRole":"normal","userId":0}
//判断传入的参数是否存在
if(_param==null||EngineUtils.isEmptyObject(_param)){
loger.log('init初始化失败',MessageTypes.ERROR_PARAM);
this._emit(MessageTypes.CLASS_INIT_FAILED,MessageTypes.ERROR_PARAM);
if(_param==null||EngineUtils.isEmptyObject(_param)||_onSuccess==null||_mcuErrorCallBack==null){
loger.log('init初始化失败,参数错误');
this._emit(MessageTypes.MCU_ERROR,MessageTypes.ERR_CLASS_INIT_PAEAM);
return ;
}
//判断必要的参数字段值
if(_param.meetingNumber==null||isNaN(_param.meetingNumber)||_param.portal==null){
if(_param.meetingNumber==null||isNaN(_param.meetingNumber)||_param.portal==null||_param.portal==""){
loger.log('init初始化失败',_param);
this._emit(MessageTypes.CLASS_INIT_FAILED,MessageTypes.ERROR_PARAM);
this._emit(MessageTypes.MCU_ERROR,MessageTypes.ERR_CLASS_INIT_PAEAM);
return ;
}
loger.log('init',_param);
... ... @@ -114,19 +142,19 @@ export default class MessageEntrance extends Emiter {
}
}
_joinClass(_param,_onSuccess,_onFailure){
//外部请求加入会议
_joinClass(_param,_onSuccess){
_joinClassSuccessCallBackFun=_onSuccess;
_joinClassFailureCallBackFun=_onFailure;
//{"userName":"名字","password":""}
if(_param==null||EngineUtils.isEmptyObject(_param)){
this._emit(MessageTypes.CLASS_JOIN_FAILED,MessageTypes.ERROR_PARAM);
if(_param==null||EngineUtils.isEmptyObject(_param)||_onSuccess==null){
this._emit(MessageTypes.MCU_ERROR,MessageTypes.ERR_CLASS_JOIN_PARAM);
loger.log('不能进入会议,传递的参数不对.',_param);
return ;
}
//判断userName
if(_param.userName==null){
if(_param.userName==null||_param.userName==""){
loger.log('不能进入会议,传递的参数不对.名字不能为空');
this._emit(MessageTypes.CLASS_JOIN_FAILED,MessageTypes.ERROR_PARAM);
this._emit(MessageTypes.MCU_ERROR,MessageTypes.ERR_CLASS_JOIN_PARAM);
return ;
}
... ... @@ -142,8 +170,10 @@ export default class MessageEntrance extends Emiter {
leaveClass() {
if(_mcu){
_mcu.leaveMCU();
GlobalConfig.setCurrentStatus(GlobalConfig.statusCode_3);
}
}
// 用meetingNumber向SASS平台获取入会验证信息成功
_sassInitSuccessHandler(_data) {
//{"siteId":"h5test","passwordRequired":true,"md5":"de399d5540b3da2fbc1eb0a770d4fd66","code":0,"msType":1}
... ... @@ -155,20 +185,22 @@ export default class MessageEntrance extends Emiter {
}
loger.log('向SASS平台获取入会验证信息成功.');
this._emit(MessageTypes.CLASS_INIT_SUCCESS,_data);
GlobalConfig.setCurrentStatus(GlobalConfig.statusCode_1);
if(_initSuccessCallBackFun){
_initSuccessCallBackFun(_data);
}
}
// 用meetingNumber向SASS平台获取入会验证信息失败
_sassInitFailedHandler() {
loger.log('向SASS平台获取入会验证信息失败.');
//this._emit(MessageTypes.CLASS_INIT_FAILED);
if(_initFailureCallBackFun){
_initFailureCallBackFun();
}
}
//// 用meetingNumber向SASS平台获取入会验证信息失败
//_sassInitFailedHandler(_data) {
// loger.log('向SASS平台获取入会验证信息失败.');
// //this._emit(MessageTypes.CLASS_INIT_FAILED);
// let callBackObj={"code":_data,"message":""};
// if(_initFailureCallBackFun){
// _initFailureCallBackFun(callBackObj);
// }
//}
//使用固定的假数据
_setDebugData(_data){
... ... @@ -183,31 +215,43 @@ export default class MessageEntrance extends Emiter {
_mcu.joinMCU(GlobalConfig.getConfInfo());
}
}
//获取会议所有参数
_h5SassGetClassDetailSuccessHandler(_data){
loger.log('获取getClassDetail完成.');
GlobalConfig.classDetail=_data;
loger.log(GlobalConfig.classDetail);
this._emit(MessageTypes.CLASS_SHOW_DETAIL, _data);
}
//获取会议所有参数
_h5SassGetMeetingParaSuccessHandler(_data){
loger.log('获取getMeetingParam完成.');
GlobalConfig.meetingParam=_data;
loger.log(_data);
loger.log(GlobalConfig.meetingParam);
}
// MCU 会议成功
_joinClassSuccessHandler() {
_joinClassSuccessHandler(_data) {
loger.log('MCU 会议成功.');
GlobalConfig.setCurrentStatus(GlobalConfig.statusCode_2);
if(_sass){
_sass.getClassDetail();//会议信息
_sass.getMeetingParam();//会议参数大全
}
if(_joinClassSuccessCallBackFun){
_joinClassSuccessCallBackFun();
}
}
// MCU 会议失败
_joinClassFailureHandler(_data){
loger.log("_joinClassFailureHandler",_data);
if(_joinClassFailureCallBackFun){
_joinClassFailureCallBackFun(_data);
_joinClassSuccessCallBackFun(_data);
}
}
//// MCU 会议失败
//_joinClassFailureHandler(_data){
// GlobalConfig.setCurrentStatus(GlobalConfig.statusCode_1);
// loger.log("_joinClassFailureHandler",_data);
// if(_joinClassFailureCallBackFun){
// let callBackObj={"code":_data,"message":""};
// _joinClassFailureCallBackFun(callBackObj);
// }
//}
// 参会处理
conferenceHandler(msg_type) {
... ...
... ... @@ -6,11 +6,23 @@ let loger = Loger.getLoger('GlobalConfig');
class GlobalConfig {
constructor () {
}
_currentStatus=null;
static setDebugData (_deBugData){
this.isDebug=true;
this.deBugData=_deBugData;
}
static getCurrentStatus(){
if(this._currentStatus==null){
this._currentStatus=this.statusCode_0;
}
return this._currentStatus;
}
static setCurrentStatus(_data){
this._currentStatus=_data;
}
static getConfInfo (){
if(this.isDebug){
... ... @@ -51,9 +63,16 @@ class GlobalConfig {
}
}
}
GlobalConfig.statusCode_0={"code":0,message:"SDK 未初始化"};
GlobalConfig.statusCode_1={"code":1,message:"未加入会议"};
GlobalConfig.statusCode_2={"code":2,message:"已经加入会议"};
GlobalConfig.statusCode_3={"code":3,message:"已经离开会议"};
GlobalConfig.statusCode_4={"code":4,message:"未知状态"};
GlobalConfig.siteId="gust";
GlobalConfig.confId=1653304953;//课堂号=classId=meetingNumber 之后统一修改为classId
GlobalConfig.nodeId=1483947664;//随机生成
GlobalConfig.confId=0;//课堂号=classId=meetingNumber 之后统一修改为classId
GlobalConfig.nodeId=0;//随机生成
GlobalConfig.topNodeID=101;//现在固定值,还不知道是做什么用
GlobalConfig.userRole="normal";
GlobalConfig.role=1;
... ... @@ -80,4 +99,6 @@ GlobalConfig.isDebug=false;
GlobalConfig.deBugData={};
GlobalConfig.meetingParam={};
GlobalConfig.classDetail={};
export default GlobalConfig;
... ...
... ... @@ -18,11 +18,11 @@ function MessageTypes() {}
//--------------------事件相关的定义--------------------------------------
//初始化相关事件定义
MessageTypes.CLASS_INIT_SUCCESS='class.init.success';//初始化成功
MessageTypes.CLASS_INIT_FAILED='class.init.failed';//初始化失败
//MessageTypes.CLASS_INIT_FAILED='class.init.failed';//初始化失败
//加入会议相关事件定义
MessageTypes.CLASS_JOIN_FAILED = 'join.class.failed';
MessageTypes.CLASS_JOIN_SUCCESS = 'join.class.success';
//MessageTypes.CLASS_JOIN_FAILED = 'join.class.failed';
//会议信息和操作事件定义
MessageTypes.CLASS_SHOW_DETAIL = 'class_detail.message';
... ... @@ -50,20 +50,42 @@ MessageTypes.ANNOTATION_UPDATE = 'annotation.update';
//音频
MessageTypes.AUDIO_RECEIVE='audio.receive';
//错误事件定义
MessageTypes.NET_ERROR = 'net_error';
MessageTypes.PRO_ERROR = 'pro_error';//协议异常
MessageTypes.MCU_ERROR ="mcuError";//MCU错误
//---------------错误消息 code 定义-------------------------------------------------
MessageTypes.ERR_NETWORK=10000;//网络错误
MessageTypes.ERR_UNKNOWN=10001;//未知错误
//会议初始化失败的几种情况
MessageTypes.ERR_CLASS_INIT_PAEAM=100;//初始化参数错误
MessageTypes.ERR_CLASS_INIT_NETWORK=101;//初始化网络错误
MessageTypes.ERR_CLASS_INIT_PROTOCOL=102;//初始化协议错误
MessageTypes.ERR_CLASS_INIT_FAILED=103;//初始化验证失败
//加入会议失败的几种情况
MessageTypes.ERR_CLASS_JOIN_NETWORK=200;//加入会议网络错误
MessageTypes.ERR_CLASS_JOIN_PROTOCOL=201;//加入会议化协议错误
MessageTypes.ERR_CLASS_JOIN_FAILED=202;//加入会议化异常错误
MessageTypes.ERR_CLASS_JOIN_PARAM=203;//加入会议参数错误
MessageTypes.ERR_CLASS_JOIN_FULL=204;//人数已满
MessageTypes.ERR_CLASS_MD5_WRONG=205;//MD5验证失败
MessageTypes.ERR_CLASS_PASSWORD_WRONG=206;//密码错误
MessageTypes.ERR_CLASS_JOIN_CONFILICT=207;//已经在其它地方登陆
MessageTypes.ERR_GET_CLASS_DETAIL=300;//获取classDetail失败
MessageTypes.ERR_GET_MEETING_PARAML=301;//获取MeetingParam失败
//---------------错误消息定义-------------------------------------------------
MessageTypes.ERROR_NET='网络异常';
MessageTypes.ERROR_PARAM='参数不正确';
MessageTypes.ERROR_CLASS_JOIN_FULL = 'class.join,full';//人数已满
MessageTypes.ERROR_CLASS_JOIN_CONFILICT = 'class.join.conflict';//已经在其它地方登陆
MessageTypes.ERROR_CLASS_PASSWORD_WRONG = 'class.password.wrong';//密码错误
MessageTypes.ERROR_CLASS_MD5_WRONG = 'class.md5.wrong';//MD5验证失败
MessageTypes.ERROR_CLASS_PROTOCOL_WRONG = 'class.protocol.wrong';//协议异常
//APE
MessageTypes.ERR_APE_SEND_FAILED_NO_JOIN=500;//APE在sdk为初始化或未加入会议之前调用发送数据接口
export default MessageTypes;
... ...
... ... @@ -57,7 +57,7 @@ class Sass extends Emiter {
return ret.json();
} else {
loger.error(`Sass获取课堂校验信息-网络异常.状态码:${ret.status}`);
this._emit(Sass.CLASS_INIT_FAILED);
this._emit(MessageTypes.MCU_ERROR,MessageTypes.ERR_CLASS_INIT_NETWORK);
throw '';
}
})
... ... @@ -67,12 +67,12 @@ class Sass extends Emiter {
this._emit(Sass.CLASS_INIT_SUCCESS,ret);
} else {
loger.warn('Sass获取课堂校验信息失败.');
this._emit(Sass.CLASS_INIT_FAILED);
this._emit(MessageTypes.MCU_ERROR,MessageTypes.ERR_CLASS_INIT_FAILED);
}
})
.catch(err => {
loger.error(`Sass获取课堂校验信息异常.状态码:${err}`);
this._emit(Sass.CLASS_INIT_FAILED,err);
this._emit(MessageTypes.MCU_ERROR,MessageTypes.ERR_CLASS_INIT_PROTOCOL);
});
}
... ... @@ -102,14 +102,14 @@ class Sass extends Emiter {
return ret.text();
} else {
loger.error(`会议密码校验-网络异常.状态码:${ret.status}`);
this._emit(MessageTypes.NET_ERROR);
this._emit(MessageTypes.MCU_ERROR,MessageTypes.ERR_CLASS_JOIN_NETWORK);
throw '';
}
})
.then(ret => {
if (ret === 'false') {
loger.error(`会议密码校验-失败.`);
this._emit(MessageTypes.CLASS_JOIN_FAILED,MessageTypes.ERROR_CLASS_PASSWORD_WRONG);
this._emit(MessageTypes.MCU_ERROR,MessageTypes.ERR_CLASS_PASSWORD_WRONG);
return ;
}
if (ret === 'true') {
... ... @@ -118,11 +118,11 @@ class Sass extends Emiter {
return;
}
loger.error(`会议密码校验-协议异常.`);
this._emit(MessageTypes.CLASS_JOIN_FAILED,MessageTypes.ERROR_CLASS_PROTOCOL_WRONG);
this._emit(MessageTypes.MCU_ERROR,MessageTypes.ERR_CLASS_JOIN_PROTOCOL);
})
.catch(err => {
loger.error(`会议密码校验-异常.状态码:${err}`);
this._emit(MessageTypes.NET_ERROR);
this._emit(MessageTypes.MCU_ERROR,MessageTypes.ERR_CLASS_JOIN_FAILED);
});
}
... ... @@ -138,7 +138,7 @@ class Sass extends Emiter {
return ret.json();
} else {
loger.error(`H5SassMD5校验-网络异常.状态码:${ret.status}`);
this._emit(MessageTypes.NET_ERROR);
this._emit(MessageTypes.MCU_ERROR,MessageTypes.ERR_CLASS_JOIN_NETWORK);
throw '';
}
})
... ... @@ -164,13 +164,13 @@ class Sass extends Emiter {
this._emit(Sass.SUCCESS,ret);
} else {
loger.log('H5SassMD5校验-失败.');
this._emit(MessageTypes.CLASS_JOIN_FAILED,MessageTypes.ERROR_CLASS_MD5_WRONG);
this._emit(MessageTypes.MCU_ERROR,MessageTypes.ERR_CLASS_MD5_WRONG);
}
})
.catch(err => {
loger.error(`H5SassMD5校验-异常.状态码:${err}`);
this._emit(MessageTypes.NET_ERROR);
this._emit(MessageTypes.MCU_ERROR,MessageTypes.ERR_CLASS_JOIN_FAILED);
});
}
... ... @@ -186,22 +186,22 @@ class Sass extends Emiter {
return ret.json();
} else {
loger.error(`H5Sass获取Class详情-网络异常.状态码:${ret.status}`);
this._emit(MessageTypes.NET_ERROR);
this._emit(MessageTypes.MCU_ERROR,MessageTypes.ERR_GET_CLASS_DETAIL);
throw '';
}
})
.then(ret => {
if (ret.errorCode === 0) {
loger.log('H5Sass获取Class详情完成');
this._emit(MessageTypes.CLASS_SHOW_DETAIL, ret);
this._emit(Sass.CLASS_GET_CLASS_DETAIL, ret);
} else {
loger.warn('H5Sass获取Class详情失败.');
this._emit(MessageTypes.NET_ERROR);
this._emit(MessageTypes.MCU_ERROR,MessageTypes.ERR_GET_CLASS_DETAIL);
}
})
.catch(err => {
loger.error(`H5Sass获取Class详情异常.状态码:${err}`);
this._emit(MessageTypes.NET_ERROR);
this._emit(MessageTypes.MCU_ERROR,MessageTypes.ERR_GET_CLASS_DETAIL);
});
}
... ... @@ -235,7 +235,8 @@ class Sass extends Emiter {
return ret.json();
} else {
loger.error(`H5Sass获取getMeetingParam-网络异常.状态码:${ret.status}`);
this._emit(MessageTypes.NET_ERROR);
this._emit(MessageTypes.MCU_ERROR,MessageTypes.ERR_GET_MEETING_PARAML);
throw '';
}
})
... ... @@ -245,19 +246,19 @@ class Sass extends Emiter {
this._emit(Sass.CLASS_GET_MEETING_PARAM, ret);
} else {
loger.warn('H5Sass获取getMeetingParam失败.');
this._emit(MessageTypes.NET_ERROR);
this._emit(MessageTypes.MCU_ERROR,MessageTypes.ERR_GET_MEETING_PARAML);
}
})
.catch(err => {
loger.error(`H5Sass获取getMeetingParam异常.状态码:${err}`);
this._emit(MessageTypes.NET_ERROR);
this._emit(MessageTypes.MCU_ERROR,MessageTypes.ERR_GET_MEETING_PARAML);
});
}
}
Sass.prototype.SUCCESS = Sass.SUCCESS = 'h5sass.success';
Sass.prototype.CLASS_INIT_SUCCESS = Sass.CLASS_INIT_SUCCESS = 'sass.class.init.success';
Sass.prototype.CLASS_INIT_FAILED = Sass.CLASS_INIT_FAILED = 'sass.class.init.failed';
Sass.prototype.CLASS_GET_MEETING_PARAM= Sass.CLASS_GET_MEETING_PARAM = 'class_getMeetingParam.message';
Sass.prototype.CLASS_GET_CLASS_DETAIL= Sass.CLASS_GET_CLASS_DETAIL = 'class_getClassDetail.message';
export default new Sass;
... ...
... ... @@ -21,6 +21,7 @@ import MessageTypes from 'MessageTypes';
import ApeConsts from './ApeConsts';
import ArrayBufferUtil from 'libs/ArrayBufferUtil';
import PduConsts from 'pdus/PduConsts';
import GlobalConfig from 'GlobalConfig';
// 日志对象
const loger = Loger.getLoger('Ape');
... ... @@ -280,6 +281,11 @@ export default class Ape extends Emiter {
send(appPdu) {
loger.log('Ape发送数据NORMAL PDU', appPdu);
loger.log('当前的状态============',GlobalConfig.getCurrentStatus().code);
if(GlobalConfig.getCurrentStatus().code==0||GlobalConfig.getCurrentStatus().code==1){
this._emit(MessageTypes.MCU_ERROR,MessageTypes.ERR_APE_SEND_FAILED_NO_JOIN);
return;
}
let normalPdu = pdu.create_normal_pdu(
appPdu.type,
this._confInfo.nodeId,
... ... @@ -300,6 +306,12 @@ export default class Ape extends Emiter {
// 发送当前APE(session uniform包)
sendUniform(appPdu, top) {
loger.log('Ape发送数据UNIFORM PDU', appPdu);
loger.log('当前的状态============',GlobalConfig.getCurrentStatus().code);
if(GlobalConfig.getCurrentStatus().code==0||GlobalConfig.getCurrentStatus().code==1){
this._emit(MessageTypes.MCU_ERROR,MessageTypes.ERR_APE_SEND_FAILED_NO_JOIN);
return;
}
let uniformPdu = pdu.create_uniform_pdu(
appPdu.type,
this._confInfo.nodeId,
... ...
... ... @@ -45,10 +45,10 @@ class ChatApe extends Ape {
sendChatMsg(_messageInfo) {
if(this._confInfo===null||EngineUtils.isEmptyObject(this._confInfo)){
loger.log('不能发送聊天消息.McuClient还未初始化数据!');
this._emit(MessageTypes.MCU_ERROR,MessageTypes.ERR_APE_SEND_FAILED_NO_JOIN);
return ;
}
// to, message
loger.log('发送聊天消息.', _messageInfo.to, _messageInfo.message);
... ...
... ... @@ -112,8 +112,8 @@ class ConferApe extends Ape {
//更新人员列表数据
rosterUpdateHandler(nodeId, nodeData) {
var userDataObj=pdu['RCNodeInfoUserDataPdu'].decode(nodeData.userData);
loger.log("更新人员列表数据",nodeId,userDataObj);
//loger.log("更新人员列表数据",nodeId,userDataObj);
if (nodeData.role === ApeConsts.NR_MASTER ||
nodeData.role === ApeConsts.NR_SLAVE) {
this.hostNodeId = nodeData.nodeId;
... ... @@ -127,7 +127,11 @@ class ConferApe extends Ape {
let rosterExists = this.rosters[nodeId];
this.rosters[nodeId] = nodeData;
if (!rosterExists) {
this._emit(MessageTypes.CLASS_INSERT_ROSTER, {"nodeId":nodeId,"nodeData":nodeData});
let userDataObj=pdu['RCNodeInfoUserDataPdu'].decode(nodeData.userData);
let newNodeData=nodeData;
newNodeData.userData=userDataObj;
loger.log("更新人员列表数据",{"nodeId":nodeId});
this._emit(MessageTypes.CLASS_INSERT_ROSTER, {"nodeId":nodeId,"nodeData":newNodeData});
this.emitRosterChange();
}
}
... ...
... ... @@ -11,7 +11,7 @@ import ApeConsts from 'apes/ApeConsts';
import ConferApe from 'apes/ConferApe';
import ArrayBufferUtil from 'libs/ArrayBufferUtil';
import Base64 from 'base64-js';
//import GlobalConfig from 'GlobalConfig';
import GlobalConfig from 'GlobalConfig';
let loger = Loger.getLoger('MCU');
... ... @@ -36,11 +36,11 @@ class MCU extends Emiter {
//MCU-发送加入会议请求
_sendJoinClassRequest(){
loger.log('MCU-发送加入会议请求.');
const confInfo = this.confInfo;
loger.log('MCU-发送加入会议请求.',confInfo);
// 创建刷新nodeId
confInfo.nodeId = parseInt(Date.now() / 1000);
GlobalConfig.nodeId=confInfo.nodeId;//这是标识自己身份的id
var joinRequestPdu = new pdu['RCConferenceJoinRequestPdu'];
joinRequestPdu.type = 2;
... ... @@ -96,7 +96,8 @@ class MCU extends Emiter {
this._emit(MessageTypes.CLASS_JOIN_SUCCESS, this.confInfo);
break;
case PduConsts.RET_FULL_CAPACITY:
this._emit(MessageTypes.CLASS_JOIN_FAILED,MessageTypes.ERROR_CLASS_JOIN_FULL);
this._emit(MessageTypes.MCU_ERROR,MessageTypes.ERR_CLASS_JOIN_FULL);
//this._emit(MessageTypes.CLASS_JOIN_FAILED,MessageTypes.ERR_CLASS_JOIN_FULL);
//this._emit(MessageTypes.CLASS_JOIN_FULL);
break;
default:
... ... @@ -143,6 +144,7 @@ class MCU extends Emiter {
this._everSocket.send(msg.toArrayBuffer());
} else {
loger.log('MCU-发送会议数据失败,MCU底层通道不可用');
this._emit(MessageTypes.MCU_ERROR,MessageTypes.ERR_SOCKET_DISCONNECT);
}
}
... ...