李勇

1.增加获取音视频通道token的接口;加入课堂成功之后会把当前加入音视频通话模块的数据返回给客户端

  1 +/**
  2 + *
  3 + * Base64Module
  4 + * */
  5 +
  6 +import Emiter from 'Emiter';
  7 +import Loger from 'Loger';
  8 +class Base64Module extends Emiter {
  9 + constructor() {
  10 + super();
  11 + this._keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
  12 + }
  13 +
  14 + // public method for encoding
  15 + encode(input) {
  16 + let output = "";
  17 + let chr1, chr2, chr3, enc1, enc2, enc3, enc4;
  18 + let i = 0;
  19 + input = this._utf8_encode(input);
  20 + while (i < input.length) {
  21 + chr1 = input.charCodeAt(i++);
  22 + chr2 = input.charCodeAt(i++);
  23 + chr3 = input.charCodeAt(i++);
  24 + enc1 = chr1 >> 2;
  25 + enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
  26 + enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
  27 + enc4 = chr3 & 63;
  28 + if (isNaN(chr2)) {
  29 + enc3 = enc4 = 64;
  30 + } else if (isNaN(chr3)) {
  31 + enc4 = 64;
  32 + }
  33 + output = output +
  34 + this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) +
  35 + this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4);
  36 + }
  37 + return output;
  38 + }
  39 +
  40 + // public method for decoding
  41 + decode(input) {
  42 + let output = "";
  43 + let chr1, chr2, chr3;
  44 + let enc1, enc2, enc3, enc4;
  45 + let i = 0;
  46 + input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
  47 + while (i < input.length) {
  48 + enc1 = this._keyStr.indexOf(input.charAt(i++));
  49 + enc2 = this._keyStr.indexOf(input.charAt(i++));
  50 + enc3 = this._keyStr.indexOf(input.charAt(i++));
  51 + enc4 = this._keyStr.indexOf(input.charAt(i++));
  52 + chr1 = (enc1 << 2) | (enc2 >> 4);
  53 + chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
  54 + chr3 = ((enc3 & 3) << 6) | enc4;
  55 + output = output + String.fromCharCode(chr1);
  56 + if (enc3 != 64) {
  57 + output = output + String.fromCharCode(chr2);
  58 + }
  59 + if (enc4 != 64) {
  60 + output = output + String.fromCharCode(chr3);
  61 + }
  62 + }
  63 + output = this._utf8_decode(output);
  64 + return output;
  65 + }
  66 +
  67 + // private method for UTF-8 encoding
  68 + _utf8_encode(string) {
  69 + string = string.replace(/\r\n/g, "\n");
  70 + let utftext = "";
  71 + for (let n = 0; n < string.length; n++) {
  72 + let c = string.charCodeAt(n);
  73 + if (c < 128) {
  74 + utftext += String.fromCharCode(c);
  75 + } else if ((c > 127) && (c < 2048)) {
  76 + utftext += String.fromCharCode((c >> 6) | 192);
  77 + utftext += String.fromCharCode((c & 63) | 128);
  78 + } else {
  79 + utftext += String.fromCharCode((c >> 12) | 224);
  80 + utftext += String.fromCharCode(((c >> 6) & 63) | 128);
  81 + utftext += String.fromCharCode((c & 63) | 128);
  82 + }
  83 +
  84 + }
  85 + return utftext;
  86 + }
  87 +
  88 + // private method for UTF-8 decoding
  89 + _utf8_decode(utftext) {
  90 + let string = "";
  91 + let i = 0;
  92 + let c=0;
  93 + let c1 = 0;
  94 + let c2 = 0;
  95 + let c3=0;
  96 + while (i < utftext.length) {
  97 + c = utftext.charCodeAt(i);
  98 + if (c < 128) {
  99 + string += String.fromCharCode(c);
  100 + i++;
  101 + } else if ((c > 191) && (c < 224)) {
  102 + c2 = utftext.charCodeAt(i + 1);
  103 + string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
  104 + i += 2;
  105 + } else {
  106 + c2 = utftext.charCodeAt(i + 1);
  107 + c3 = utftext.charCodeAt(i + 2);
  108 + string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
  109 + i += 3;
  110 + }
  111 + }
  112 + return string;
  113 + }
  114 +}
  115 +export default Base64Module;
  116 +
@@ -62,7 +62,7 @@ export default class MessageEntrance extends Emiter { @@ -62,7 +62,7 @@ export default class MessageEntrance extends Emiter {
62 constructor() { 62 constructor() {
63 super(); 63 super();
64 //sdk 信息 64 //sdk 信息
65 - GlobalConfig.sdkVersion = "v2.2.16.20170905"; 65 + GlobalConfig.sdkVersion = "v2.3.6.20170907";
66 loger.warn("sdkVersion:" + GlobalConfig.sdkVersion); 66 loger.warn("sdkVersion:" + GlobalConfig.sdkVersion);
67 67
68 //设置 68 //设置
@@ -99,6 +99,7 @@ export default class MessageEntrance extends Emiter { @@ -99,6 +99,7 @@ export default class MessageEntrance extends Emiter {
99 _webRtc.on('*', (type, data) => this._emit(type, data)); 99 _webRtc.on('*', (type, data) => this._emit(type, data));
100 _webRtc.on(MessageTypes.USER_DEVICE_STATUS_CHAANGE, this.userDeviecStatusChange.bind(this)); //监听摄像头和麦克风的开启状态 100 _webRtc.on(MessageTypes.USER_DEVICE_STATUS_CHAANGE, this.userDeviecStatusChange.bind(this)); //监听摄像头和麦克风的开启状态
101 101
  102 +
102 // Sass平台层 103 // Sass平台层
103 _sass = Sass; 104 _sass = Sass;
104 _sass.on('*', (type, data) => this._emit(type, data)); 105 _sass.on('*', (type, data) => this._emit(type, data));
@@ -1095,17 +1096,116 @@ export default class MessageEntrance extends Emiter { @@ -1095,17 +1096,116 @@ export default class MessageEntrance extends Emiter {
1095 GlobalConfig.screenWidth = window.screen.width; 1096 GlobalConfig.screenWidth = window.screen.width;
1096 GlobalConfig.screenHeight = window.screen.height; 1097 GlobalConfig.screenHeight = window.screen.height;
1097 1098
1098 -  
1099 GlobalConfig.channelId = ""+GlobalConfig.siteId+"_"+GlobalConfig.classId; 1099 GlobalConfig.channelId = ""+GlobalConfig.siteId+"_"+GlobalConfig.classId;
1100 GlobalConfig.userUid = GlobalConfig.nodeId; 1100 GlobalConfig.userUid = GlobalConfig.nodeId;
1101 - GlobalConfig.channelKey=null; 1101 + GlobalConfig.channelKey="";
  1102 +
  1103 + //判断是否需要获取加入音视频通话频道的channelKey
  1104 + if(GlobalConfig.appCertificate){
  1105 + loger.log("加入视频通话模块->需要先获取channelKey")
  1106 + //获取channelKey
  1107 + _sass.getChannelKeyToken((_data)=>{
  1108 + //{"code":200,"channelKey":"005AQAoAEQzQUQxNzFDOEQwOEU3OTVGMjlCMzZDRUZENTNGOTU0RDY4N0ZGMUEQANylukzO70ocgrNX9hlkNNWvpLBZ9buDAy/fuVkAAA==","uid":"751373669"}
  1109 + if(_data&&_data.channelKey){
  1110 + GlobalConfig.channelKey=_data.channelKey||"";
  1111 + }
  1112 + this._joinClassSuccessSeting();
  1113 + })
  1114 + }else {
  1115 + loger.log("加入视频通话模块->不需要获取channelKey")
  1116 + this._joinClassSuccessSeting();
  1117 + }
  1118 + /*
  1119 + //返回给客户端初始化成功的数据
  1120 + let joinClassSuccessCallBackData = {};
  1121 + joinClassSuccessCallBackData.isRecordPlayBack = GlobalConfig.isRecordPlayBack;
  1122 + joinClassSuccessCallBackData.DOCServerIP = GlobalConfig.DOCServerIP;
  1123 + joinClassSuccessCallBackData.DOCServerPort = GlobalConfig.DOCServerPort;
1102 1124
  1125 + joinClassSuccessCallBackData.classStatus = GlobalConfig.classStatus;
  1126 + joinClassSuccessCallBackData.classId = GlobalConfig.classId;
  1127 + joinClassSuccessCallBackData.className = GlobalConfig.className;
  1128 + joinClassSuccessCallBackData.h5Module = GlobalConfig.h5Module;
  1129 + joinClassSuccessCallBackData.isHost = GlobalConfig.isHost;
  1130 + joinClassSuccessCallBackData.maxAudioChannels = GlobalConfig.maxAudioChannels;
  1131 + joinClassSuccessCallBackData.maxVideoChannels = GlobalConfig.maxVideoChannels;
  1132 + joinClassSuccessCallBackData.maxMediaChannels = GlobalConfig.maxMediaChannels;
  1133 + joinClassSuccessCallBackData.mcuDelay = GlobalConfig.mcuDelay;
1103 1134
  1135 + joinClassSuccessCallBackData.msType = GlobalConfig.msType;
  1136 + joinClassSuccessCallBackData.nodeId = GlobalConfig.nodeId;
  1137 + joinClassSuccessCallBackData.password = GlobalConfig.password;
  1138 + joinClassSuccessCallBackData.passwordRequired = GlobalConfig.passwordRequired; // 老师的默认是true
  1139 + //GlobalConfig.passwordRequired 老师的默认是true
  1140 + //GlobalConfig.portal=_data.portal;
  1141 + joinClassSuccessCallBackData.role = GlobalConfig.role;
  1142 + joinClassSuccessCallBackData.siteId = GlobalConfig.siteId;
  1143 + joinClassSuccessCallBackData.topNodeID = GlobalConfig.topNodeID;
  1144 + joinClassSuccessCallBackData.userId = GlobalConfig.userId;
  1145 + joinClassSuccessCallBackData.userName = GlobalConfig.userName;
  1146 + joinClassSuccessCallBackData.userRole = GlobalConfig.userRole;
  1147 + joinClassSuccessCallBackData.userType = GlobalConfig.userType;
  1148 +
  1149 + joinClassSuccessCallBackData.siteId = GlobalConfig.siteId;
  1150 + joinClassSuccessCallBackData.classId = GlobalConfig.classId;
  1151 + joinClassSuccessCallBackData.userRole = GlobalConfig.userRole;
  1152 + joinClassSuccessCallBackData.userId = GlobalConfig.userId;
  1153 + joinClassSuccessCallBackData.passwordRequired = GlobalConfig.passwordRequired;
  1154 + joinClassSuccessCallBackData.classType = GlobalConfig.classType || ApeConsts.CLASS_TYPE_1;
  1155 +
  1156 + joinClassSuccessCallBackData.country = GlobalConfig.country; //国家
  1157 + joinClassSuccessCallBackData.city = GlobalConfig.city; //城市
  1158 + joinClassSuccessCallBackData.province = GlobalConfig.province; //服务商
  1159 + joinClassSuccessCallBackData.isp = GlobalConfig.isp; //服务商
  1160 +
  1161 + joinClassSuccessCallBackData.classTimestamp = GlobalConfig.classTimestamp; //课堂进行的累积时间
  1162 + joinClassSuccessCallBackData.recordTimestamp = GlobalConfig.recordTimestamp; //课堂录制的累积时间
  1163 + joinClassSuccessCallBackData.recordPlaybackMaxTime = GlobalConfig.recordPlaybackMaxTime; //录制回放的总时间
  1164 +
  1165 + joinClassSuccessCallBackData.fps = GlobalConfig.fps;
  1166 + joinClassSuccessCallBackData.gop = GlobalConfig.gop;
  1167 + joinClassSuccessCallBackData.videoQuality = GlobalConfig.videoQuality;
  1168 +
  1169 + joinClassSuccessCallBackData.ssTunnelAppURL = GlobalConfig.ssTunnelAppURL;
  1170 + joinClassSuccessCallBackData.currentSceneTableId = GlobalConfig.currentSceneTableId; //文档区域的模块显示
  1171 + joinClassSuccessCallBackData.serverAndLoacTimeDistanc = GlobalConfig.serverAndLoacTimeDistanc;
  1172 +
  1173 + joinClassSuccessCallBackData.deviceType = GlobalConfig.deviceType;
  1174 + joinClassSuccessCallBackData.language = GlobalConfig.language;
  1175 + joinClassSuccessCallBackData.explorer = GlobalConfig.explorer;
  1176 + joinClassSuccessCallBackData.explorerVersion = GlobalConfig.explorerVersion;
  1177 + joinClassSuccessCallBackData.os = GlobalConfig.os;
  1178 +
  1179 + joinClassSuccessCallBackData.channelId =GlobalConfig.channelId ;
  1180 + joinClassSuccessCallBackData.channelKey =GlobalConfig.channelKey ;
  1181 + joinClassSuccessCallBackData.userUid = GlobalConfig.userUid;
  1182 + joinClassSuccessCallBackData.appId = GlobalConfig.appId;
  1183 + joinClassSuccessCallBackData.appCertificate = GlobalConfig.appCertificate;
  1184 + joinClassSuccessCallBackData.appRecordingKey = GlobalConfig.appRecordingKey;
  1185 +
  1186 + //设置日志上报所需的信息
  1187 + LogManager.serverAndLoacTimeDistanc = GlobalConfig.serverAndLoacTimeDistanc;//本地时间和服务器时间的差值(秒)
  1188 + LogManager.classId = GlobalConfig.classId;//课堂号
  1189 + LogManager.userId = GlobalConfig.userId;//userId
  1190 + LogManager.nodeId = GlobalConfig.nodeId;//nodeId
  1191 + LogManager.userRole = GlobalConfig.userRole;//userRole
  1192 + LogManager.userName = GlobalConfig.userName;//用户名称
  1193 + LogManager.logUrl = GlobalConfig.logUrl;//日志服务器地址 //http://log.3mang.com
  1194 + LogManager.platform=GlobalConfig.platform;
  1195 + loger.log('加入课堂成功->');
  1196 + loger.log(joinClassSuccessCallBackData);
  1197 +
  1198 + //加入课堂成功,广播消息
  1199 + this._emit(MessageTypes.CLASS_JOIN_SUCCESS, joinClassSuccessCallBackData);
  1200 +
  1201 + //加入音视频通话模块
  1202 + this._joinChannel({channelId:GlobalConfig.channelId,channelKey:GlobalConfig.channelKey ,uid:GlobalConfig.userUid,info:""+GlobalConfig.userRole});*/
  1203 + }
  1204 + //加入课堂成功之后设置本地数据和返回数据给客户端
  1205 + _joinClassSuccessSeting(){
1104 //返回给客户端初始化成功的数据 1206 //返回给客户端初始化成功的数据
1105 let joinClassSuccessCallBackData = {}; 1207 let joinClassSuccessCallBackData = {};
1106 -  
1107 joinClassSuccessCallBackData.isRecordPlayBack = GlobalConfig.isRecordPlayBack; 1208 joinClassSuccessCallBackData.isRecordPlayBack = GlobalConfig.isRecordPlayBack;
1108 -  
1109 joinClassSuccessCallBackData.DOCServerIP = GlobalConfig.DOCServerIP; 1209 joinClassSuccessCallBackData.DOCServerIP = GlobalConfig.DOCServerIP;
1110 joinClassSuccessCallBackData.DOCServerPort = GlobalConfig.DOCServerPort; 1210 joinClassSuccessCallBackData.DOCServerPort = GlobalConfig.DOCServerPort;
1111 1211
@@ -1163,7 +1263,6 @@ export default class MessageEntrance extends Emiter { @@ -1163,7 +1263,6 @@ export default class MessageEntrance extends Emiter {
1163 joinClassSuccessCallBackData.explorerVersion = GlobalConfig.explorerVersion; 1263 joinClassSuccessCallBackData.explorerVersion = GlobalConfig.explorerVersion;
1164 joinClassSuccessCallBackData.os = GlobalConfig.os; 1264 joinClassSuccessCallBackData.os = GlobalConfig.os;
1165 1265
1166 -  
1167 joinClassSuccessCallBackData.channelId =GlobalConfig.channelId ; 1266 joinClassSuccessCallBackData.channelId =GlobalConfig.channelId ;
1168 joinClassSuccessCallBackData.channelKey =GlobalConfig.channelKey ; 1267 joinClassSuccessCallBackData.channelKey =GlobalConfig.channelKey ;
1169 joinClassSuccessCallBackData.userUid = GlobalConfig.userUid; 1268 joinClassSuccessCallBackData.userUid = GlobalConfig.userUid;
@@ -1185,7 +1284,6 @@ export default class MessageEntrance extends Emiter { @@ -1185,7 +1284,6 @@ export default class MessageEntrance extends Emiter {
1185 1284
1186 //加入课堂成功,广播消息 1285 //加入课堂成功,广播消息
1187 this._emit(MessageTypes.CLASS_JOIN_SUCCESS, joinClassSuccessCallBackData); 1286 this._emit(MessageTypes.CLASS_JOIN_SUCCESS, joinClassSuccessCallBackData);
1188 -  
1189 //加入音视频通话模块 1287 //加入音视频通话模块
1190 this._joinChannel({channelId:GlobalConfig.channelId,channelKey:GlobalConfig.channelKey ,uid:GlobalConfig.userUid,info:""+GlobalConfig.userRole}); 1288 this._joinChannel({channelId:GlobalConfig.channelId,channelKey:GlobalConfig.channelKey ,uid:GlobalConfig.userUid,info:""+GlobalConfig.userRole});
1191 } 1289 }
@@ -2796,11 +2894,24 @@ export default class MessageEntrance extends Emiter { @@ -2796,11 +2894,24 @@ export default class MessageEntrance extends Emiter {
2796 return; 2894 return;
2797 } 2895 }
2798 loger.log("设置appConfig",_params); 2896 loger.log("设置appConfig",_params);
2799 - GlobalConfig.appId=_params.appId||"eb253cc7b40c4a8b82f0a5b6f93c2ce0"; 2897 + if(GlobalConfig.appId){
  2898 + loger.log("本地已经设置appConfig,不需要再设置");
  2899 + return;
  2900 + }
  2901 + GlobalConfig.appId=_params.appId||"";
2800 GlobalConfig.appCertificate=_params.appCertificate||""; 2902 GlobalConfig.appCertificate=_params.appCertificate||"";
2801 GlobalConfig.appRecordingKey=_params.appRecordingKey||""; 2903 GlobalConfig.appRecordingKey=_params.appRecordingKey||"";
2802 GlobalConfig.recordInterfaces=_params.recordInterfaces||""; 2904 GlobalConfig.recordInterfaces=_params.recordInterfaces||"";
2803 - GlobalConfig.getChannelToken=_params.getChannelToken||""; 2905 + GlobalConfig.getChannelToken=_params.getChannelToken||""
  2906 + //去掉协议头
  2907 + if(GlobalConfig.recordInterfaces){
  2908 + GlobalConfig.recordInterfaces=GlobalConfig.recordInterfaces.replace('http://',"");
  2909 + GlobalConfig.recordInterfaces=GlobalConfig.recordInterfaces.replace('https://',"");
  2910 + }
  2911 + if(GlobalConfig.getChannelToken){
  2912 + GlobalConfig.getChannelToken=GlobalConfig.getChannelToken.replace('http://',"");
  2913 + GlobalConfig.getChannelToken=GlobalConfig.getChannelToken.replace('https://',"");
  2914 + }
2804 } 2915 }
2805 //录制控制 2916 //录制控制
2806 _recordControl(_params){ 2917 _recordControl(_params){
@@ -557,11 +557,11 @@ GlobalConfig.isHttps=false;//是否是https @@ -557,11 +557,11 @@ GlobalConfig.isHttps=false;//是否是https
557 557
558 558
559 //webRtc 559 //webRtc
560 -GlobalConfig.appId = 'eb253cc7b40c4a8b82f0a5b6f93c2ce0'; 560 +GlobalConfig.appId = '';
561 GlobalConfig.appCertificate = ""; 561 GlobalConfig.appCertificate = "";
562 GlobalConfig.appRecordingKey = ""; 562 GlobalConfig.appRecordingKey = "";
563 GlobalConfig.channelId = ""; 563 GlobalConfig.channelId = "";
564 -GlobalConfig.channelKey = null; 564 +GlobalConfig.channelKey ="";
565 GlobalConfig.userUid = 0; 565 GlobalConfig.userUid = 0;
566 GlobalConfig.recordInterfaces="";//控制开启录制的接口 566 GlobalConfig.recordInterfaces="";//控制开启录制的接口
567 GlobalConfig.getChannelToken="";//获取token的地址 567 GlobalConfig.getChannelToken="";//获取token的地址
@@ -537,17 +537,79 @@ class Sass extends Emiter { @@ -537,17 +537,79 @@ class Sass extends Emiter {
537 loger.error(`保存开始录制信息异常.状态码:${err}`); 537 loger.error(`保存开始录制信息异常.状态码:${err}`);
538 }); 538 });
539 } 539 }
  540 + //调用服务器端获取加入音视频通话模块的token
  541 + getChannelKeyToken(_callback){
  542 + if(!GlobalConfig.getChannelToken){
  543 + loger.log("获取channelKey->失败->接口地址无效");
  544 + if(_callback){
  545 + _callback(null);
  546 + }
  547 + return;
  548 + }
  549 + /* let userIpInfo = {
  550 + "appId": key.value,
  551 + "appCertificate": channelKey.value,
  552 + "channel": channel.value,
  553 + "uid": userUid
  554 + }*/
  555 + let url=GlobalConfig.locationProtocol+GlobalConfig.getChannelToken;
  556 + fetch(encodeURI(url), {
  557 + method: 'POST',
  558 + headers: {
  559 + "Content-Type": "application/x-www-form-urlencoded"
  560 + },
  561 + body: `appId=${GlobalConfig.appId}&channel=${GlobalConfig.channelId}&appCertificate=${GlobalConfig.appCertificate}&uid=${GlobalConfig.userUid}`,
  562 + timeout: 4000
  563 + })
  564 + .then(ret => {
  565 + if (ret.ok) {
  566 + return ret.json();
  567 + } else {
  568 + loger.error(`获取channelKey-网络异常.状态码:${ret.status}`);
  569 + if(_callback){
  570 + _callback(null);
  571 + }
  572 + throw '';
  573 + }
  574 + })
  575 + .then(ret => {
  576 + //channelKey :"005AQAoADZBQzk0M0UzMjVGQzgxREU5Njk1REUyRkVFMEYyMkRBRjFCRjIxN0QQANylukzO70ocgrNX9hlkNNWwKDdW9buDA68oN1YAAA=="
  577 + // code: 200
  578 + // uid:"2882341273"
  579 + if (ret.code == 200) {
  580 + loger.log('获取channelKey 完成',ret);
  581 + if(_callback){
  582 + _callback(ret);
  583 + }
  584 + } else {
  585 + loger.warn('获取channelKey 失败.', ret);
  586 + if(_callback){
  587 + _callback(null);
  588 + }
  589 + }
  590 + })
  591 + .catch(err => {
  592 + loger.error(`获取channelKey.状态码:${err}`);
  593 + if(_callback){
  594 + _callback(null);
  595 + }
  596 + });
  597 + }
  598 +
540 //调用服务器端开启录制 599 //调用服务器端开启录制
541 startServerRecord(){ 600 startServerRecord(){
542 if(!GlobalConfig.recordInterfaces){ 601 if(!GlobalConfig.recordInterfaces){
543 - loger.log("调用服务器端开启录制->失败->接口地址无效") 602 + loger.log("调用服务器端开启录制->失败->接口地址无效");
  603 + return;
544 } 604 }
545 - fetch(encodeURI(GlobalConfig.recordInterfaces), { 605 + //{"appId":"eb253cc7b40c4a8b82f0a5b6f93c2ce0","channel":"testcdn_580908347","channelKey":null,"uid":594312157} //录制的channelKey是appCertificate
  606 + let url=GlobalConfig.locationProtocol+GlobalConfig.recordInterfaces;
  607 + fetch(encodeURI(url), {
546 method: 'POST', 608 method: 'POST',
547 headers: { 609 headers: {
548 "Content-Type": "application/x-www-form-urlencoded" 610 "Content-Type": "application/x-www-form-urlencoded"
549 }, 611 },
550 - body: `appID=${GlobalConfig.appId}&channel=${GlobalConfig.channelId}&channelKey=${GlobalConfig.channelKey}&uid=${GlobalConfig.userUid}`, 612 + body: `appId=${GlobalConfig.appId}&channel=${GlobalConfig.channelId}&channelKey=${GlobalConfig.appCertificate}&uid=${GlobalConfig.userUid}`,
551 timeout: 4000 613 timeout: 4000
552 }) 614 })
553 .then(ret => { 615 .then(ret => {
@@ -559,9 +621,8 @@ class Sass extends Emiter { @@ -559,9 +621,8 @@ class Sass extends Emiter {
559 } 621 }
560 }) 622 })
561 .then(ret => { 623 .then(ret => {
562 - if (ret.errorCode === 0) {  
563 - loger.log('调用服务器端开启录制 完成');  
564 - this._emit(Sass.CLASS_SAVE_RECORD_INFO_SUCCESS, _param); 624 + if (ret) {
  625 + loger.log('调用服务器端开启录制完成',ret);
565 } else { 626 } else {
566 loger.warn('调用服务器端开启录制 失败.', ret); 627 loger.warn('调用服务器端开启录制 失败.', ret);
567 } 628 }
@@ -14,7 +14,7 @@ let loger = Loger.getLoger('WebRtcApe'); @@ -14,7 +14,7 @@ let loger = Loger.getLoger('WebRtcApe');
14 class WebRtcApe extends Emiter { 14 class WebRtcApe extends Emiter {
15 constructor() { 15 constructor() {
16 super(); 16 super();
17 - this.appId = 'eb253cc7b40c4a8b82f0a5b6f93c2ce0'; 17 + this.appId = '';
18 this.appCertificate = ""; 18 this.appCertificate = "";
19 this.appRecordingKey = ""; 19 this.appRecordingKey = "";
20 20
@@ -158,7 +158,7 @@ class WebRtcApe extends Emiter { @@ -158,7 +158,7 @@ class WebRtcApe extends Emiter {
158 this.info =_params.info || ""; 158 this.info =_params.info || "";
159 this.channelKey = _params.channelKey||null; 159 this.channelKey = _params.channelKey||null;
160 160
161 - loger.log("加入视频通话频道->channelId:"+this.channelId,"uid:"+this.uid); 161 + loger.log("开始加入视频通话频道->channelId:"+this.channelId,"uid:"+this.uid);
162 this.client.join(this.channelKey , ""+this.channelId, this.uid, (uid)=> { 162 this.client.join(this.channelKey , ""+this.channelId, this.uid, (uid)=> {
163 this.uid = uid; 163 this.uid = uid;
164 loger.log("加入视频通话频道->成功->channelId:"+this.channelId,"uid:"+this.uid); 164 loger.log("加入视频通话频道->成功->channelId:"+this.channelId,"uid:"+this.uid);
@@ -258,7 +258,7 @@ class WebRtcApe extends Emiter { @@ -258,7 +258,7 @@ class WebRtcApe extends Emiter {
258 }); 258 });
259 259
260 }, (err)=> { 260 }, (err)=> {
261 - loger.error("webRtc->推流->本地流开启失败", err); 261 + loger.warn("webRtc->推流->本地流开启失败", err);
262 this._emit(MessageTypes.WEB_RTC_PUBLISH_FAILED,err); 262 this._emit(MessageTypes.WEB_RTC_PUBLISH_FAILED,err);
263 }); 263 });
264 } 264 }