李勇

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

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

3.定义errorCode
此 diff 太大无法显示。
  1 +require('es6-promise').polyfill();
  2 +require('whatwg-fetch');
  3 +require('jquery-touchswipe');
  4 +require('string.fromcodepoint');
  5 +
1 import Emiter from './Emiter'; 6 import Emiter from './Emiter';
2 import Sass from 'Sass'; 7 import Sass from 'Sass';
3 import Mcu from 'mcu'; 8 import Mcu from 'mcu';
@@ -11,6 +16,7 @@ import WhiteBoardApe from 'apes/WhiteBoardApe'; @@ -11,6 +16,7 @@ import WhiteBoardApe from 'apes/WhiteBoardApe';
11 import EngineUtils from "EngineUtils"; 16 import EngineUtils from "EngineUtils";
12 import GlobalConfig from 'GlobalConfig'; 17 import GlobalConfig from 'GlobalConfig';
13 18
  19 +
14 let loger = Loger.getLoger('MessageEntrance'); 20 let loger = Loger.getLoger('MessageEntrance');
15 let _sdkInfo={"version":"v.1.0.1","author":"www.3mang.com"}; 21 let _sdkInfo={"version":"v.1.0.1","author":"www.3mang.com"};
16 22
@@ -23,13 +29,15 @@ let _video_ape; @@ -23,13 +29,15 @@ let _video_ape;
23 let _doc_ape; 29 let _doc_ape;
24 let _wb_ape; 30 let _wb_ape;
25 31
26 -//init callBack function 32 +//初始化成功回调函数
27 let _initSuccessCallBackFun; 33 let _initSuccessCallBackFun;
28 -let _initFailureCallBackFun;  
29 34
30 -//join callBack function 35 +//加入会议成功回调函数
31 let _joinClassSuccessCallBackFun; 36 let _joinClassSuccessCallBackFun;
32 -let _joinClassFailureCallBackFun; 37 +
  38 +//监听mcu所有错误异常回调函数
  39 +let _mcuErrorCallBackFun;
  40 +
33 41
34 //MCUClient 外部实例化主类 42 //MCUClient 外部实例化主类
35 export default class MessageEntrance extends Emiter { 43 export default class MessageEntrance extends Emiter {
@@ -39,8 +47,10 @@ export default class MessageEntrance extends Emiter { @@ -39,8 +47,10 @@ export default class MessageEntrance extends Emiter {
39 this.sdkInfo=_sdkInfo; 47 this.sdkInfo=_sdkInfo;
40 loger.log(this.sdkInfo); 48 loger.log(this.sdkInfo);
41 49
42 - this.on(MessageTypes.CLASS_INIT_FAILED,this._sassInitFailedHandler.bind(this));  
43 - this.on(MessageTypes.CLASS_JOIN_FAILED,this._joinClassFailureHandler.bind(this)); 50 + //初始化状态
  51 + GlobalConfig.setCurrentStatus(GlobalConfig.statusCode_0);
  52 +
  53 + this.on(MessageTypes.MCU_ERROR,this._mcuErrorHandler.bind(this));
44 this.on(MessageTypes.DOC_SHOW, this.docShowHandler.bind(this)); 54 this.on(MessageTypes.DOC_SHOW, this.docShowHandler.bind(this));
45 55
46 // Sass平台层 56 // Sass平台层
@@ -48,7 +58,7 @@ export default class MessageEntrance extends Emiter { @@ -48,7 +58,7 @@ export default class MessageEntrance extends Emiter {
48 _sass.on('*', (type, data) => this._emit(type, data)); 58 _sass.on('*', (type, data) => this._emit(type, data));
49 _sass.on(_sass.SUCCESS, this._sassVerifySuccessHandler.bind(this)); 59 _sass.on(_sass.SUCCESS, this._sassVerifySuccessHandler.bind(this));
50 _sass.on(_sass.CLASS_INIT_SUCCESS, this._sassInitSuccessHandler.bind(this)); 60 _sass.on(_sass.CLASS_INIT_SUCCESS, this._sassInitSuccessHandler.bind(this));
51 - _sass.on(_sass.CLASS_INIT_FAILED, this._sassInitFailedHandler.bind(this)); 61 + _sass.on(_sass.CLASS_GET_CLASS_DETAIL, this._h5SassGetClassDetailSuccessHandler.bind(this));
52 _sass.on(_sass.CLASS_GET_MEETING_PARAM,this._h5SassGetMeetingParaSuccessHandler); 62 _sass.on(_sass.CLASS_GET_MEETING_PARAM,this._h5SassGetMeetingParaSuccessHandler);
53 63
54 // 底层MCU消息层 64 // 底层MCU消息层
@@ -71,34 +81,52 @@ export default class MessageEntrance extends Emiter { @@ -71,34 +81,52 @@ export default class MessageEntrance extends Emiter {
71 _doc_ape = new DocApe(); 81 _doc_ape = new DocApe();
72 _doc_ape.on('*', (type, data) => this._emit(type, data)); 82 _doc_ape.on('*', (type, data) => this._emit(type, data));
73 _doc_ape.on(MessageTypes.DOC_UPDATE, this.docUpdateHandler.bind(this)); 83 _doc_ape.on(MessageTypes.DOC_UPDATE, this.docUpdateHandler.bind(this));
74 -  
75 _doc_ape.on(MessageTypes.DOC_DEL, this.docDeleteHandler.bind(this)); 84 _doc_ape.on(MessageTypes.DOC_DEL, this.docDeleteHandler.bind(this));
76 85
  86 +
77 _wb_ape = new WhiteBoardApe(); 87 _wb_ape = new WhiteBoardApe();
78 _wb_ape.on('*', (type, data) => this._emit(type, data)); 88 _wb_ape.on('*', (type, data) => this._emit(type, data));
79 _wb_ape.on(MessageTypes.ANNOTATION_UPDATE, this.annoUpdateHandler.bind(this)); 89 _wb_ape.on(MessageTypes.ANNOTATION_UPDATE, this.annoUpdateHandler.bind(this));
80 90
  91 +
81 //公开外部调用的方法 92 //公开外部调用的方法
82 this.init=this._init; 93 this.init=this._init;
83 this.joinClass=this._joinClass; 94 this.joinClass=this._joinClass;
84 this.sendChatMsg=this._sendChatMsg; 95 this.sendChatMsg=this._sendChatMsg;
85 this.setDebugData=this._setDebugData; 96 this.setDebugData=this._setDebugData;
  97 + this.mcuClientStatus=this._mcuClientStatus;
  98 + }
  99 +
  100 +
  101 + //mcu异常监听
  102 + _mcuErrorHandler(_data){
  103 + if(_mcuErrorCallBackFun){
  104 + let errorMessage={"code":_data,"reson":""};
  105 + _mcuErrorCallBackFun(errorMessage);
  106 + }
86 } 107 }
87 - _init(_param,_onSuccess,_onFailure){  
88 - _initSuccessCallBackFun=_onSuccess;  
89 - _initFailureCallBackFun=_onFailure;  
90 108
  109 + //获取当前的状态
  110 + _mcuClientStatus(){
  111 + return GlobalConfig.getCurrentStatus();
  112 + }
  113 +
  114 + //初始化
  115 + _init(_param,_onSuccess,_mcuErrorCallBack){
  116 + _initSuccessCallBackFun=_onSuccess;
  117 + // _initFailureCallBackFun=_onFailure;
  118 + _mcuErrorCallBackFun=_mcuErrorCallBack;
91 //{"meetingNumber":"1653304953","portal":"112.126.80.182:80","userRole":"normal","userId":0} 119 //{"meetingNumber":"1653304953","portal":"112.126.80.182:80","userRole":"normal","userId":0}
92 //判断传入的参数是否存在 120 //判断传入的参数是否存在
93 - if(_param==null||EngineUtils.isEmptyObject(_param)){  
94 - loger.log('init初始化失败',MessageTypes.ERROR_PARAM);  
95 - this._emit(MessageTypes.CLASS_INIT_FAILED,MessageTypes.ERROR_PARAM); 121 + if(_param==null||EngineUtils.isEmptyObject(_param)||_onSuccess==null||_mcuErrorCallBack==null){
  122 + loger.log('init初始化失败,参数错误');
  123 + this._emit(MessageTypes.MCU_ERROR,MessageTypes.ERR_CLASS_INIT_PAEAM);
96 return ; 124 return ;
97 } 125 }
98 //判断必要的参数字段值 126 //判断必要的参数字段值
99 - if(_param.meetingNumber==null||isNaN(_param.meetingNumber)||_param.portal==null){ 127 + if(_param.meetingNumber==null||isNaN(_param.meetingNumber)||_param.portal==null||_param.portal==""){
100 loger.log('init初始化失败',_param); 128 loger.log('init初始化失败',_param);
101 - this._emit(MessageTypes.CLASS_INIT_FAILED,MessageTypes.ERROR_PARAM); 129 + this._emit(MessageTypes.MCU_ERROR,MessageTypes.ERR_CLASS_INIT_PAEAM);
102 return ; 130 return ;
103 } 131 }
104 loger.log('init',_param); 132 loger.log('init',_param);
@@ -114,19 +142,19 @@ export default class MessageEntrance extends Emiter { @@ -114,19 +142,19 @@ export default class MessageEntrance extends Emiter {
114 } 142 }
115 } 143 }
116 144
117 - _joinClass(_param,_onSuccess,_onFailure){ 145 + //外部请求加入会议
  146 + _joinClass(_param,_onSuccess){
118 _joinClassSuccessCallBackFun=_onSuccess; 147 _joinClassSuccessCallBackFun=_onSuccess;
119 - _joinClassFailureCallBackFun=_onFailure;  
120 //{"userName":"名字","password":""} 148 //{"userName":"名字","password":""}
121 - if(_param==null||EngineUtils.isEmptyObject(_param)){  
122 - this._emit(MessageTypes.CLASS_JOIN_FAILED,MessageTypes.ERROR_PARAM); 149 + if(_param==null||EngineUtils.isEmptyObject(_param)||_onSuccess==null){
  150 + this._emit(MessageTypes.MCU_ERROR,MessageTypes.ERR_CLASS_JOIN_PARAM);
123 loger.log('不能进入会议,传递的参数不对.',_param); 151 loger.log('不能进入会议,传递的参数不对.',_param);
124 return ; 152 return ;
125 } 153 }
126 //判断userName 154 //判断userName
127 - if(_param.userName==null){ 155 + if(_param.userName==null||_param.userName==""){
128 loger.log('不能进入会议,传递的参数不对.名字不能为空'); 156 loger.log('不能进入会议,传递的参数不对.名字不能为空');
129 - this._emit(MessageTypes.CLASS_JOIN_FAILED,MessageTypes.ERROR_PARAM); 157 + this._emit(MessageTypes.MCU_ERROR,MessageTypes.ERR_CLASS_JOIN_PARAM);
130 return ; 158 return ;
131 } 159 }
132 160
@@ -142,8 +170,10 @@ export default class MessageEntrance extends Emiter { @@ -142,8 +170,10 @@ export default class MessageEntrance extends Emiter {
142 leaveClass() { 170 leaveClass() {
143 if(_mcu){ 171 if(_mcu){
144 _mcu.leaveMCU(); 172 _mcu.leaveMCU();
  173 + GlobalConfig.setCurrentStatus(GlobalConfig.statusCode_3);
145 } 174 }
146 } 175 }
  176 +
147 // 用meetingNumber向SASS平台获取入会验证信息成功 177 // 用meetingNumber向SASS平台获取入会验证信息成功
148 _sassInitSuccessHandler(_data) { 178 _sassInitSuccessHandler(_data) {
149 //{"siteId":"h5test","passwordRequired":true,"md5":"de399d5540b3da2fbc1eb0a770d4fd66","code":0,"msType":1} 179 //{"siteId":"h5test","passwordRequired":true,"md5":"de399d5540b3da2fbc1eb0a770d4fd66","code":0,"msType":1}
@@ -155,20 +185,22 @@ export default class MessageEntrance extends Emiter { @@ -155,20 +185,22 @@ export default class MessageEntrance extends Emiter {
155 } 185 }
156 loger.log('向SASS平台获取入会验证信息成功.'); 186 loger.log('向SASS平台获取入会验证信息成功.');
157 this._emit(MessageTypes.CLASS_INIT_SUCCESS,_data); 187 this._emit(MessageTypes.CLASS_INIT_SUCCESS,_data);
  188 + GlobalConfig.setCurrentStatus(GlobalConfig.statusCode_1);
158 189
159 if(_initSuccessCallBackFun){ 190 if(_initSuccessCallBackFun){
160 _initSuccessCallBackFun(_data); 191 _initSuccessCallBackFun(_data);
161 } 192 }
162 } 193 }
163 194
164 - // 用meetingNumber向SASS平台获取入会验证信息失败  
165 - _sassInitFailedHandler() {  
166 - loger.log('向SASS平台获取入会验证信息失败.');  
167 - //this._emit(MessageTypes.CLASS_INIT_FAILED);  
168 - if(_initFailureCallBackFun){  
169 - _initFailureCallBackFun();  
170 - }  
171 - } 195 + //// 用meetingNumber向SASS平台获取入会验证信息失败
  196 + //_sassInitFailedHandler(_data) {
  197 + // loger.log('向SASS平台获取入会验证信息失败.');
  198 + // //this._emit(MessageTypes.CLASS_INIT_FAILED);
  199 + // let callBackObj={"code":_data,"message":""};
  200 + // if(_initFailureCallBackFun){
  201 + // _initFailureCallBackFun(callBackObj);
  202 + // }
  203 + //}
172 204
173 //使用固定的假数据 205 //使用固定的假数据
174 _setDebugData(_data){ 206 _setDebugData(_data){
@@ -183,31 +215,43 @@ export default class MessageEntrance extends Emiter { @@ -183,31 +215,43 @@ export default class MessageEntrance extends Emiter {
183 _mcu.joinMCU(GlobalConfig.getConfInfo()); 215 _mcu.joinMCU(GlobalConfig.getConfInfo());
184 } 216 }
185 } 217 }
  218 +
  219 + //获取会议所有参数
  220 + _h5SassGetClassDetailSuccessHandler(_data){
  221 + loger.log('获取getClassDetail完成.');
  222 + GlobalConfig.classDetail=_data;
  223 + loger.log(GlobalConfig.classDetail);
  224 + this._emit(MessageTypes.CLASS_SHOW_DETAIL, _data);
  225 + }
  226 +
186 //获取会议所有参数 227 //获取会议所有参数
187 _h5SassGetMeetingParaSuccessHandler(_data){ 228 _h5SassGetMeetingParaSuccessHandler(_data){
188 loger.log('获取getMeetingParam完成.'); 229 loger.log('获取getMeetingParam完成.');
189 GlobalConfig.meetingParam=_data; 230 GlobalConfig.meetingParam=_data;
190 - loger.log(_data); 231 + loger.log(GlobalConfig.meetingParam);
191 } 232 }
192 233
193 // MCU 会议成功 234 // MCU 会议成功
194 - _joinClassSuccessHandler() { 235 + _joinClassSuccessHandler(_data) {
195 loger.log('MCU 会议成功.'); 236 loger.log('MCU 会议成功.');
  237 + GlobalConfig.setCurrentStatus(GlobalConfig.statusCode_2);
196 if(_sass){ 238 if(_sass){
197 _sass.getClassDetail();//会议信息 239 _sass.getClassDetail();//会议信息
198 _sass.getMeetingParam();//会议参数大全 240 _sass.getMeetingParam();//会议参数大全
199 } 241 }
200 if(_joinClassSuccessCallBackFun){ 242 if(_joinClassSuccessCallBackFun){
201 - _joinClassSuccessCallBackFun();  
202 - }  
203 - }  
204 - // MCU 会议失败  
205 - _joinClassFailureHandler(_data){  
206 - loger.log("_joinClassFailureHandler",_data);  
207 - if(_joinClassFailureCallBackFun){  
208 - _joinClassFailureCallBackFun(_data); 243 + _joinClassSuccessCallBackFun(_data);
209 } 244 }
210 } 245 }
  246 + //// MCU 会议失败
  247 + //_joinClassFailureHandler(_data){
  248 + // GlobalConfig.setCurrentStatus(GlobalConfig.statusCode_1);
  249 + // loger.log("_joinClassFailureHandler",_data);
  250 + // if(_joinClassFailureCallBackFun){
  251 + // let callBackObj={"code":_data,"message":""};
  252 + // _joinClassFailureCallBackFun(callBackObj);
  253 + // }
  254 + //}
211 255
212 // 参会处理 256 // 参会处理
213 conferenceHandler(msg_type) { 257 conferenceHandler(msg_type) {
@@ -6,11 +6,23 @@ let loger = Loger.getLoger('GlobalConfig'); @@ -6,11 +6,23 @@ let loger = Loger.getLoger('GlobalConfig');
6 6
7 class GlobalConfig { 7 class GlobalConfig {
8 constructor () { 8 constructor () {
  9 +
9 } 10 }
  11 + _currentStatus=null;
10 static setDebugData (_deBugData){ 12 static setDebugData (_deBugData){
11 this.isDebug=true; 13 this.isDebug=true;
12 this.deBugData=_deBugData; 14 this.deBugData=_deBugData;
13 } 15 }
  16 + static getCurrentStatus(){
  17 + if(this._currentStatus==null){
  18 + this._currentStatus=this.statusCode_0;
  19 + }
  20 + return this._currentStatus;
  21 + }
  22 + static setCurrentStatus(_data){
  23 + this._currentStatus=_data;
  24 + }
  25 +
14 static getConfInfo (){ 26 static getConfInfo (){
15 if(this.isDebug){ 27 if(this.isDebug){
16 28
@@ -51,9 +63,16 @@ class GlobalConfig { @@ -51,9 +63,16 @@ class GlobalConfig {
51 } 63 }
52 } 64 }
53 } 65 }
  66 +
  67 +GlobalConfig.statusCode_0={"code":0,message:"SDK 未初始化"};
  68 +GlobalConfig.statusCode_1={"code":1,message:"未加入会议"};
  69 +GlobalConfig.statusCode_2={"code":2,message:"已经加入会议"};
  70 +GlobalConfig.statusCode_3={"code":3,message:"已经离开会议"};
  71 +GlobalConfig.statusCode_4={"code":4,message:"未知状态"};
  72 +
54 GlobalConfig.siteId="gust"; 73 GlobalConfig.siteId="gust";
55 -GlobalConfig.confId=1653304953;//课堂号=classId=meetingNumber 之后统一修改为classId  
56 -GlobalConfig.nodeId=1483947664;//随机生成 74 +GlobalConfig.confId=0;//课堂号=classId=meetingNumber 之后统一修改为classId
  75 +GlobalConfig.nodeId=0;//随机生成
57 GlobalConfig.topNodeID=101;//现在固定值,还不知道是做什么用 76 GlobalConfig.topNodeID=101;//现在固定值,还不知道是做什么用
58 GlobalConfig.userRole="normal"; 77 GlobalConfig.userRole="normal";
59 GlobalConfig.role=1; 78 GlobalConfig.role=1;
@@ -80,4 +99,6 @@ GlobalConfig.isDebug=false; @@ -80,4 +99,6 @@ GlobalConfig.isDebug=false;
80 GlobalConfig.deBugData={}; 99 GlobalConfig.deBugData={};
81 100
82 GlobalConfig.meetingParam={}; 101 GlobalConfig.meetingParam={};
  102 +GlobalConfig.classDetail={};
  103 +
83 export default GlobalConfig; 104 export default GlobalConfig;
@@ -18,11 +18,11 @@ function MessageTypes() {} @@ -18,11 +18,11 @@ function MessageTypes() {}
18 //--------------------事件相关的定义-------------------------------------- 18 //--------------------事件相关的定义--------------------------------------
19 //初始化相关事件定义 19 //初始化相关事件定义
20 MessageTypes.CLASS_INIT_SUCCESS='class.init.success';//初始化成功 20 MessageTypes.CLASS_INIT_SUCCESS='class.init.success';//初始化成功
21 -MessageTypes.CLASS_INIT_FAILED='class.init.failed';//初始化失败 21 +//MessageTypes.CLASS_INIT_FAILED='class.init.failed';//初始化失败
22 22
23 //加入会议相关事件定义 23 //加入会议相关事件定义
24 -MessageTypes.CLASS_JOIN_FAILED = 'join.class.failed';  
25 MessageTypes.CLASS_JOIN_SUCCESS = 'join.class.success'; 24 MessageTypes.CLASS_JOIN_SUCCESS = 'join.class.success';
  25 +//MessageTypes.CLASS_JOIN_FAILED = 'join.class.failed';
26 26
27 //会议信息和操作事件定义 27 //会议信息和操作事件定义
28 MessageTypes.CLASS_SHOW_DETAIL = 'class_detail.message'; 28 MessageTypes.CLASS_SHOW_DETAIL = 'class_detail.message';
@@ -50,20 +50,42 @@ MessageTypes.ANNOTATION_UPDATE = 'annotation.update'; @@ -50,20 +50,42 @@ MessageTypes.ANNOTATION_UPDATE = 'annotation.update';
50 //音频 50 //音频
51 MessageTypes.AUDIO_RECEIVE='audio.receive'; 51 MessageTypes.AUDIO_RECEIVE='audio.receive';
52 52
  53 +
  54 +
  55 +
53 //错误事件定义 56 //错误事件定义
54 -MessageTypes.NET_ERROR = 'net_error';  
55 -MessageTypes.PRO_ERROR = 'pro_error';//协议异常 57 +MessageTypes.MCU_ERROR ="mcuError";//MCU错误
  58 +
  59 +
  60 +//---------------错误消息 code 定义-------------------------------------------------
  61 +MessageTypes.ERR_NETWORK=10000;//网络错误
  62 +MessageTypes.ERR_UNKNOWN=10001;//未知错误
  63 +
  64 +
  65 +//会议初始化失败的几种情况
  66 +MessageTypes.ERR_CLASS_INIT_PAEAM=100;//初始化参数错误
  67 +MessageTypes.ERR_CLASS_INIT_NETWORK=101;//初始化网络错误
  68 +MessageTypes.ERR_CLASS_INIT_PROTOCOL=102;//初始化协议错误
  69 +MessageTypes.ERR_CLASS_INIT_FAILED=103;//初始化验证失败
  70 +
  71 +
  72 +//加入会议失败的几种情况
  73 +MessageTypes.ERR_CLASS_JOIN_NETWORK=200;//加入会议网络错误
  74 +MessageTypes.ERR_CLASS_JOIN_PROTOCOL=201;//加入会议化协议错误
  75 +MessageTypes.ERR_CLASS_JOIN_FAILED=202;//加入会议化异常错误
  76 +MessageTypes.ERR_CLASS_JOIN_PARAM=203;//加入会议参数错误
  77 +MessageTypes.ERR_CLASS_JOIN_FULL=204;//人数已满
  78 +MessageTypes.ERR_CLASS_MD5_WRONG=205;//MD5验证失败
  79 +MessageTypes.ERR_CLASS_PASSWORD_WRONG=206;//密码错误
  80 +MessageTypes.ERR_CLASS_JOIN_CONFILICT=207;//已经在其它地方登陆
  81 +
56 82
  83 +MessageTypes.ERR_GET_CLASS_DETAIL=300;//获取classDetail失败
  84 +MessageTypes.ERR_GET_MEETING_PARAML=301;//获取MeetingParam失败
57 85
58 -//---------------错误消息定义-------------------------------------------------  
59 -MessageTypes.ERROR_NET='网络异常';  
60 -MessageTypes.ERROR_PARAM='参数不正确';  
61 86
62 -MessageTypes.ERROR_CLASS_JOIN_FULL = 'class.join,full';//人数已满  
63 -MessageTypes.ERROR_CLASS_JOIN_CONFILICT = 'class.join.conflict';//已经在其它地方登陆  
64 -MessageTypes.ERROR_CLASS_PASSWORD_WRONG = 'class.password.wrong';//密码错误  
65 -MessageTypes.ERROR_CLASS_MD5_WRONG = 'class.md5.wrong';//MD5验证失败  
66 -MessageTypes.ERROR_CLASS_PROTOCOL_WRONG = 'class.protocol.wrong';//协议异常 87 +//APE
  88 +MessageTypes.ERR_APE_SEND_FAILED_NO_JOIN=500;//APE在sdk为初始化或未加入会议之前调用发送数据接口
67 89
68 export default MessageTypes; 90 export default MessageTypes;
69 91
@@ -57,7 +57,7 @@ class Sass extends Emiter { @@ -57,7 +57,7 @@ class Sass extends Emiter {
57 return ret.json(); 57 return ret.json();
58 } else { 58 } else {
59 loger.error(`Sass获取课堂校验信息-网络异常.状态码:${ret.status}`); 59 loger.error(`Sass获取课堂校验信息-网络异常.状态码:${ret.status}`);
60 - this._emit(Sass.CLASS_INIT_FAILED); 60 + this._emit(MessageTypes.MCU_ERROR,MessageTypes.ERR_CLASS_INIT_NETWORK);
61 throw ''; 61 throw '';
62 } 62 }
63 }) 63 })
@@ -67,12 +67,12 @@ class Sass extends Emiter { @@ -67,12 +67,12 @@ class Sass extends Emiter {
67 this._emit(Sass.CLASS_INIT_SUCCESS,ret); 67 this._emit(Sass.CLASS_INIT_SUCCESS,ret);
68 } else { 68 } else {
69 loger.warn('Sass获取课堂校验信息失败.'); 69 loger.warn('Sass获取课堂校验信息失败.');
70 - this._emit(Sass.CLASS_INIT_FAILED); 70 + this._emit(MessageTypes.MCU_ERROR,MessageTypes.ERR_CLASS_INIT_FAILED);
71 } 71 }
72 }) 72 })
73 .catch(err => { 73 .catch(err => {
74 loger.error(`Sass获取课堂校验信息异常.状态码:${err}`); 74 loger.error(`Sass获取课堂校验信息异常.状态码:${err}`);
75 - this._emit(Sass.CLASS_INIT_FAILED,err); 75 + this._emit(MessageTypes.MCU_ERROR,MessageTypes.ERR_CLASS_INIT_PROTOCOL);
76 }); 76 });
77 } 77 }
78 78
@@ -102,14 +102,14 @@ class Sass extends Emiter { @@ -102,14 +102,14 @@ class Sass extends Emiter {
102 return ret.text(); 102 return ret.text();
103 } else { 103 } else {
104 loger.error(`会议密码校验-网络异常.状态码:${ret.status}`); 104 loger.error(`会议密码校验-网络异常.状态码:${ret.status}`);
105 - this._emit(MessageTypes.NET_ERROR); 105 + this._emit(MessageTypes.MCU_ERROR,MessageTypes.ERR_CLASS_JOIN_NETWORK);
106 throw ''; 106 throw '';
107 } 107 }
108 }) 108 })
109 .then(ret => { 109 .then(ret => {
110 if (ret === 'false') { 110 if (ret === 'false') {
111 loger.error(`会议密码校验-失败.`); 111 loger.error(`会议密码校验-失败.`);
112 - this._emit(MessageTypes.CLASS_JOIN_FAILED,MessageTypes.ERROR_CLASS_PASSWORD_WRONG); 112 + this._emit(MessageTypes.MCU_ERROR,MessageTypes.ERR_CLASS_PASSWORD_WRONG);
113 return ; 113 return ;
114 } 114 }
115 if (ret === 'true') { 115 if (ret === 'true') {
@@ -118,11 +118,11 @@ class Sass extends Emiter { @@ -118,11 +118,11 @@ class Sass extends Emiter {
118 return; 118 return;
119 } 119 }
120 loger.error(`会议密码校验-协议异常.`); 120 loger.error(`会议密码校验-协议异常.`);
121 - this._emit(MessageTypes.CLASS_JOIN_FAILED,MessageTypes.ERROR_CLASS_PROTOCOL_WRONG); 121 + this._emit(MessageTypes.MCU_ERROR,MessageTypes.ERR_CLASS_JOIN_PROTOCOL);
122 }) 122 })
123 .catch(err => { 123 .catch(err => {
124 loger.error(`会议密码校验-异常.状态码:${err}`); 124 loger.error(`会议密码校验-异常.状态码:${err}`);
125 - this._emit(MessageTypes.NET_ERROR); 125 + this._emit(MessageTypes.MCU_ERROR,MessageTypes.ERR_CLASS_JOIN_FAILED);
126 }); 126 });
127 } 127 }
128 128
@@ -138,7 +138,7 @@ class Sass extends Emiter { @@ -138,7 +138,7 @@ class Sass extends Emiter {
138 return ret.json(); 138 return ret.json();
139 } else { 139 } else {
140 loger.error(`H5SassMD5校验-网络异常.状态码:${ret.status}`); 140 loger.error(`H5SassMD5校验-网络异常.状态码:${ret.status}`);
141 - this._emit(MessageTypes.NET_ERROR); 141 + this._emit(MessageTypes.MCU_ERROR,MessageTypes.ERR_CLASS_JOIN_NETWORK);
142 throw ''; 142 throw '';
143 } 143 }
144 }) 144 })
@@ -164,13 +164,13 @@ class Sass extends Emiter { @@ -164,13 +164,13 @@ class Sass extends Emiter {
164 this._emit(Sass.SUCCESS,ret); 164 this._emit(Sass.SUCCESS,ret);
165 } else { 165 } else {
166 loger.log('H5SassMD5校验-失败.'); 166 loger.log('H5SassMD5校验-失败.');
167 - this._emit(MessageTypes.CLASS_JOIN_FAILED,MessageTypes.ERROR_CLASS_MD5_WRONG); 167 + this._emit(MessageTypes.MCU_ERROR,MessageTypes.ERR_CLASS_MD5_WRONG);
168 168
169 } 169 }
170 }) 170 })
171 .catch(err => { 171 .catch(err => {
172 loger.error(`H5SassMD5校验-异常.状态码:${err}`); 172 loger.error(`H5SassMD5校验-异常.状态码:${err}`);
173 - this._emit(MessageTypes.NET_ERROR); 173 + this._emit(MessageTypes.MCU_ERROR,MessageTypes.ERR_CLASS_JOIN_FAILED);
174 }); 174 });
175 } 175 }
176 176
@@ -186,22 +186,22 @@ class Sass extends Emiter { @@ -186,22 +186,22 @@ class Sass extends Emiter {
186 return ret.json(); 186 return ret.json();
187 } else { 187 } else {
188 loger.error(`H5Sass获取Class详情-网络异常.状态码:${ret.status}`); 188 loger.error(`H5Sass获取Class详情-网络异常.状态码:${ret.status}`);
189 - this._emit(MessageTypes.NET_ERROR); 189 + this._emit(MessageTypes.MCU_ERROR,MessageTypes.ERR_GET_CLASS_DETAIL);
190 throw ''; 190 throw '';
191 } 191 }
192 }) 192 })
193 .then(ret => { 193 .then(ret => {
194 if (ret.errorCode === 0) { 194 if (ret.errorCode === 0) {
195 loger.log('H5Sass获取Class详情完成'); 195 loger.log('H5Sass获取Class详情完成');
196 - this._emit(MessageTypes.CLASS_SHOW_DETAIL, ret); 196 + this._emit(Sass.CLASS_GET_CLASS_DETAIL, ret);
197 } else { 197 } else {
198 loger.warn('H5Sass获取Class详情失败.'); 198 loger.warn('H5Sass获取Class详情失败.');
199 - this._emit(MessageTypes.NET_ERROR); 199 + this._emit(MessageTypes.MCU_ERROR,MessageTypes.ERR_GET_CLASS_DETAIL);
200 } 200 }
201 }) 201 })
202 .catch(err => { 202 .catch(err => {
203 loger.error(`H5Sass获取Class详情异常.状态码:${err}`); 203 loger.error(`H5Sass获取Class详情异常.状态码:${err}`);
204 - this._emit(MessageTypes.NET_ERROR); 204 + this._emit(MessageTypes.MCU_ERROR,MessageTypes.ERR_GET_CLASS_DETAIL);
205 }); 205 });
206 } 206 }
207 207
@@ -235,7 +235,8 @@ class Sass extends Emiter { @@ -235,7 +235,8 @@ class Sass extends Emiter {
235 return ret.json(); 235 return ret.json();
236 } else { 236 } else {
237 loger.error(`H5Sass获取getMeetingParam-网络异常.状态码:${ret.status}`); 237 loger.error(`H5Sass获取getMeetingParam-网络异常.状态码:${ret.status}`);
238 - this._emit(MessageTypes.NET_ERROR); 238 + this._emit(MessageTypes.MCU_ERROR,MessageTypes.ERR_GET_MEETING_PARAML);
  239 +
239 throw ''; 240 throw '';
240 } 241 }
241 }) 242 })
@@ -245,19 +246,19 @@ class Sass extends Emiter { @@ -245,19 +246,19 @@ class Sass extends Emiter {
245 this._emit(Sass.CLASS_GET_MEETING_PARAM, ret); 246 this._emit(Sass.CLASS_GET_MEETING_PARAM, ret);
246 } else { 247 } else {
247 loger.warn('H5Sass获取getMeetingParam失败.'); 248 loger.warn('H5Sass获取getMeetingParam失败.');
248 - this._emit(MessageTypes.NET_ERROR); 249 + this._emit(MessageTypes.MCU_ERROR,MessageTypes.ERR_GET_MEETING_PARAML);
249 } 250 }
250 }) 251 })
251 .catch(err => { 252 .catch(err => {
252 loger.error(`H5Sass获取getMeetingParam异常.状态码:${err}`); 253 loger.error(`H5Sass获取getMeetingParam异常.状态码:${err}`);
253 - this._emit(MessageTypes.NET_ERROR); 254 + this._emit(MessageTypes.MCU_ERROR,MessageTypes.ERR_GET_MEETING_PARAML);
254 }); 255 });
255 } 256 }
256 } 257 }
257 258
258 Sass.prototype.SUCCESS = Sass.SUCCESS = 'h5sass.success'; 259 Sass.prototype.SUCCESS = Sass.SUCCESS = 'h5sass.success';
259 Sass.prototype.CLASS_INIT_SUCCESS = Sass.CLASS_INIT_SUCCESS = 'sass.class.init.success'; 260 Sass.prototype.CLASS_INIT_SUCCESS = Sass.CLASS_INIT_SUCCESS = 'sass.class.init.success';
260 -Sass.prototype.CLASS_INIT_FAILED = Sass.CLASS_INIT_FAILED = 'sass.class.init.failed';  
261 Sass.prototype.CLASS_GET_MEETING_PARAM= Sass.CLASS_GET_MEETING_PARAM = 'class_getMeetingParam.message'; 261 Sass.prototype.CLASS_GET_MEETING_PARAM= Sass.CLASS_GET_MEETING_PARAM = 'class_getMeetingParam.message';
  262 +Sass.prototype.CLASS_GET_CLASS_DETAIL= Sass.CLASS_GET_CLASS_DETAIL = 'class_getClassDetail.message';
262 export default new Sass; 263 export default new Sass;
263 264
@@ -21,6 +21,7 @@ import MessageTypes from 'MessageTypes'; @@ -21,6 +21,7 @@ import MessageTypes from 'MessageTypes';
21 import ApeConsts from './ApeConsts'; 21 import ApeConsts from './ApeConsts';
22 import ArrayBufferUtil from 'libs/ArrayBufferUtil'; 22 import ArrayBufferUtil from 'libs/ArrayBufferUtil';
23 import PduConsts from 'pdus/PduConsts'; 23 import PduConsts from 'pdus/PduConsts';
  24 +import GlobalConfig from 'GlobalConfig';
24 25
25 // 日志对象 26 // 日志对象
26 const loger = Loger.getLoger('Ape'); 27 const loger = Loger.getLoger('Ape');
@@ -280,6 +281,11 @@ export default class Ape extends Emiter { @@ -280,6 +281,11 @@ export default class Ape extends Emiter {
280 281
281 send(appPdu) { 282 send(appPdu) {
282 loger.log('Ape发送数据NORMAL PDU', appPdu); 283 loger.log('Ape发送数据NORMAL PDU', appPdu);
  284 + loger.log('当前的状态============',GlobalConfig.getCurrentStatus().code);
  285 + if(GlobalConfig.getCurrentStatus().code==0||GlobalConfig.getCurrentStatus().code==1){
  286 + this._emit(MessageTypes.MCU_ERROR,MessageTypes.ERR_APE_SEND_FAILED_NO_JOIN);
  287 + return;
  288 + }
283 let normalPdu = pdu.create_normal_pdu( 289 let normalPdu = pdu.create_normal_pdu(
284 appPdu.type, 290 appPdu.type,
285 this._confInfo.nodeId, 291 this._confInfo.nodeId,
@@ -300,6 +306,12 @@ export default class Ape extends Emiter { @@ -300,6 +306,12 @@ export default class Ape extends Emiter {
300 // 发送当前APE(session uniform包) 306 // 发送当前APE(session uniform包)
301 sendUniform(appPdu, top) { 307 sendUniform(appPdu, top) {
302 loger.log('Ape发送数据UNIFORM PDU', appPdu); 308 loger.log('Ape发送数据UNIFORM PDU', appPdu);
  309 + loger.log('当前的状态============',GlobalConfig.getCurrentStatus().code);
  310 + if(GlobalConfig.getCurrentStatus().code==0||GlobalConfig.getCurrentStatus().code==1){
  311 + this._emit(MessageTypes.MCU_ERROR,MessageTypes.ERR_APE_SEND_FAILED_NO_JOIN);
  312 + return;
  313 + }
  314 +
303 let uniformPdu = pdu.create_uniform_pdu( 315 let uniformPdu = pdu.create_uniform_pdu(
304 appPdu.type, 316 appPdu.type,
305 this._confInfo.nodeId, 317 this._confInfo.nodeId,
@@ -45,10 +45,10 @@ class ChatApe extends Ape { @@ -45,10 +45,10 @@ class ChatApe extends Ape {
45 sendChatMsg(_messageInfo) { 45 sendChatMsg(_messageInfo) {
46 if(this._confInfo===null||EngineUtils.isEmptyObject(this._confInfo)){ 46 if(this._confInfo===null||EngineUtils.isEmptyObject(this._confInfo)){
47 loger.log('不能发送聊天消息.McuClient还未初始化数据!'); 47 loger.log('不能发送聊天消息.McuClient还未初始化数据!');
  48 + this._emit(MessageTypes.MCU_ERROR,MessageTypes.ERR_APE_SEND_FAILED_NO_JOIN);
48 return ; 49 return ;
49 } 50 }
50 51
51 -  
52 // to, message 52 // to, message
53 loger.log('发送聊天消息.', _messageInfo.to, _messageInfo.message); 53 loger.log('发送聊天消息.', _messageInfo.to, _messageInfo.message);
54 54
@@ -112,8 +112,8 @@ class ConferApe extends Ape { @@ -112,8 +112,8 @@ class ConferApe extends Ape {
112 112
113 //更新人员列表数据 113 //更新人员列表数据
114 rosterUpdateHandler(nodeId, nodeData) { 114 rosterUpdateHandler(nodeId, nodeData) {
115 - var userDataObj=pdu['RCNodeInfoUserDataPdu'].decode(nodeData.userData);  
116 - loger.log("更新人员列表数据",nodeId,userDataObj); 115 +
  116 + //loger.log("更新人员列表数据",nodeId,userDataObj);
117 if (nodeData.role === ApeConsts.NR_MASTER || 117 if (nodeData.role === ApeConsts.NR_MASTER ||
118 nodeData.role === ApeConsts.NR_SLAVE) { 118 nodeData.role === ApeConsts.NR_SLAVE) {
119 this.hostNodeId = nodeData.nodeId; 119 this.hostNodeId = nodeData.nodeId;
@@ -127,7 +127,11 @@ class ConferApe extends Ape { @@ -127,7 +127,11 @@ class ConferApe extends Ape {
127 let rosterExists = this.rosters[nodeId]; 127 let rosterExists = this.rosters[nodeId];
128 this.rosters[nodeId] = nodeData; 128 this.rosters[nodeId] = nodeData;
129 if (!rosterExists) { 129 if (!rosterExists) {
130 - this._emit(MessageTypes.CLASS_INSERT_ROSTER, {"nodeId":nodeId,"nodeData":nodeData}); 130 + let userDataObj=pdu['RCNodeInfoUserDataPdu'].decode(nodeData.userData);
  131 + let newNodeData=nodeData;
  132 + newNodeData.userData=userDataObj;
  133 + loger.log("更新人员列表数据",{"nodeId":nodeId});
  134 + this._emit(MessageTypes.CLASS_INSERT_ROSTER, {"nodeId":nodeId,"nodeData":newNodeData});
131 this.emitRosterChange(); 135 this.emitRosterChange();
132 } 136 }
133 } 137 }
@@ -11,7 +11,7 @@ import ApeConsts from 'apes/ApeConsts'; @@ -11,7 +11,7 @@ import ApeConsts from 'apes/ApeConsts';
11 import ConferApe from 'apes/ConferApe'; 11 import ConferApe from 'apes/ConferApe';
12 import ArrayBufferUtil from 'libs/ArrayBufferUtil'; 12 import ArrayBufferUtil from 'libs/ArrayBufferUtil';
13 import Base64 from 'base64-js'; 13 import Base64 from 'base64-js';
14 -//import GlobalConfig from 'GlobalConfig'; 14 +import GlobalConfig from 'GlobalConfig';
15 15
16 let loger = Loger.getLoger('MCU'); 16 let loger = Loger.getLoger('MCU');
17 17
@@ -36,11 +36,11 @@ class MCU extends Emiter { @@ -36,11 +36,11 @@ class MCU extends Emiter {
36 36
37 //MCU-发送加入会议请求 37 //MCU-发送加入会议请求
38 _sendJoinClassRequest(){ 38 _sendJoinClassRequest(){
39 - loger.log('MCU-发送加入会议请求.');  
40 const confInfo = this.confInfo; 39 const confInfo = this.confInfo;
41 - 40 + loger.log('MCU-发送加入会议请求.',confInfo);
42 // 创建刷新nodeId 41 // 创建刷新nodeId
43 confInfo.nodeId = parseInt(Date.now() / 1000); 42 confInfo.nodeId = parseInt(Date.now() / 1000);
  43 + GlobalConfig.nodeId=confInfo.nodeId;//这是标识自己身份的id
44 44
45 var joinRequestPdu = new pdu['RCConferenceJoinRequestPdu']; 45 var joinRequestPdu = new pdu['RCConferenceJoinRequestPdu'];
46 joinRequestPdu.type = 2; 46 joinRequestPdu.type = 2;
@@ -96,7 +96,8 @@ class MCU extends Emiter { @@ -96,7 +96,8 @@ class MCU extends Emiter {
96 this._emit(MessageTypes.CLASS_JOIN_SUCCESS, this.confInfo); 96 this._emit(MessageTypes.CLASS_JOIN_SUCCESS, this.confInfo);
97 break; 97 break;
98 case PduConsts.RET_FULL_CAPACITY: 98 case PduConsts.RET_FULL_CAPACITY:
99 - this._emit(MessageTypes.CLASS_JOIN_FAILED,MessageTypes.ERROR_CLASS_JOIN_FULL); 99 + this._emit(MessageTypes.MCU_ERROR,MessageTypes.ERR_CLASS_JOIN_FULL);
  100 + //this._emit(MessageTypes.CLASS_JOIN_FAILED,MessageTypes.ERR_CLASS_JOIN_FULL);
100 //this._emit(MessageTypes.CLASS_JOIN_FULL); 101 //this._emit(MessageTypes.CLASS_JOIN_FULL);
101 break; 102 break;
102 default: 103 default:
@@ -143,6 +144,7 @@ class MCU extends Emiter { @@ -143,6 +144,7 @@ class MCU extends Emiter {
143 this._everSocket.send(msg.toArrayBuffer()); 144 this._everSocket.send(msg.toArrayBuffer());
144 } else { 145 } else {
145 loger.log('MCU-发送会议数据失败,MCU底层通道不可用'); 146 loger.log('MCU-发送会议数据失败,MCU底层通道不可用');
  147 + this._emit(MessageTypes.MCU_ERROR,MessageTypes.ERR_SOCKET_DISCONNECT);
146 } 148 }
147 } 149 }
148 150