李勇

增加 webRtc 相关的数据返回给客户端;

@@ -59,7 +59,7 @@ export default class MessageEntrance extends Emiter { @@ -59,7 +59,7 @@ export default class MessageEntrance extends Emiter {
59 constructor() { 59 constructor() {
60 super(); 60 super();
61 //sdk 信息 61 //sdk 信息
62 - GlobalConfig.sdkVersion = "v2.1.17.20170902"; 62 + GlobalConfig.sdkVersion = "v2.1.22.20170904";
63 loger.warn("sdkVersion:" + GlobalConfig.sdkVersion); 63 loger.warn("sdkVersion:" + GlobalConfig.sdkVersion);
64 64
65 //设置 65 //设置
@@ -1048,6 +1048,12 @@ export default class MessageEntrance extends Emiter { @@ -1048,6 +1048,12 @@ export default class MessageEntrance extends Emiter {
1048 GlobalConfig.screenWidth = window.screen.width; 1048 GlobalConfig.screenWidth = window.screen.width;
1049 GlobalConfig.screenHeight = window.screen.height; 1049 GlobalConfig.screenHeight = window.screen.height;
1050 1050
  1051 +
  1052 + GlobalConfig.channelId = ""+GlobalConfig.siteId+"_"+GlobalConfig.classId;
  1053 + GlobalConfig.userUid = GlobalConfig.nodeId;
  1054 + GlobalConfig.channelKey=null;
  1055 +
  1056 +
1051 //返回给客户端初始化成功的数据 1057 //返回给客户端初始化成功的数据
1052 let joinClassSuccessCallBackData = {}; 1058 let joinClassSuccessCallBackData = {};
1053 1059
@@ -1110,6 +1116,14 @@ export default class MessageEntrance extends Emiter { @@ -1110,6 +1116,14 @@ export default class MessageEntrance extends Emiter {
1110 joinClassSuccessCallBackData.explorerVersion = GlobalConfig.explorerVersion; 1116 joinClassSuccessCallBackData.explorerVersion = GlobalConfig.explorerVersion;
1111 joinClassSuccessCallBackData.os = GlobalConfig.os; 1117 joinClassSuccessCallBackData.os = GlobalConfig.os;
1112 1118
  1119 +
  1120 + joinClassSuccessCallBackData.channelId =GlobalConfig.channelId ;
  1121 + joinClassSuccessCallBackData.channelKey =GlobalConfig.channelKey ;
  1122 + joinClassSuccessCallBackData.userUid = GlobalConfig.userUid;
  1123 + joinClassSuccessCallBackData.appId = GlobalConfig.appId;
  1124 + joinClassSuccessCallBackData.appCertificate = GlobalConfig.appCertificate;
  1125 + joinClassSuccessCallBackData.appRecordingKey = GlobalConfig.appRecordingKey;
  1126 +
1113 //设置日志上报所需的信息 1127 //设置日志上报所需的信息
1114 LogManager.serverAndLoacTimeDistanc = GlobalConfig.serverAndLoacTimeDistanc;//本地时间和服务器时间的差值(秒) 1128 LogManager.serverAndLoacTimeDistanc = GlobalConfig.serverAndLoacTimeDistanc;//本地时间和服务器时间的差值(秒)
1115 LogManager.classId = GlobalConfig.classId;//课堂号 1129 LogManager.classId = GlobalConfig.classId;//课堂号
@@ -1126,7 +1140,7 @@ export default class MessageEntrance extends Emiter { @@ -1126,7 +1140,7 @@ export default class MessageEntrance extends Emiter {
1126 this._emit(MessageTypes.CLASS_JOIN_SUCCESS, joinClassSuccessCallBackData); 1140 this._emit(MessageTypes.CLASS_JOIN_SUCCESS, joinClassSuccessCallBackData);
1127 1141
1128 //加入音视频通话模块 1142 //加入音视频通话模块
1129 - this._joinChannel({channelId:GlobalConfig.siteId+"_"+GlobalConfig.classId,uid:GlobalConfig.nodeId,info:""+GlobalConfig.userRole}); 1143 + this._joinChannel({channelId:GlobalConfig.channelId,channelKey:GlobalConfig.channelKey ,uid:GlobalConfig.userUid,info:""+GlobalConfig.userRole});
1130 } 1144 }
1131 1145
1132 //切换MCU ->_param->{reConnect:false} //reConnect(是否立即替换当前的ip并且重新连接) 1146 //切换MCU ->_param->{reConnect:false} //reConnect(是否立即替换当前的ip并且重新连接)
@@ -1613,6 +1627,10 @@ export default class MessageEntrance extends Emiter { @@ -1613,6 +1627,10 @@ export default class MessageEntrance extends Emiter {
1613 GlobalConfig.setMediaShareList(_data.sharedMediaList); //提前上传的媒体共享文件列表 1627 GlobalConfig.setMediaShareList(_data.sharedMediaList); //提前上传的媒体共享文件列表
1614 1628
1615 1629
  1630 + GlobalConfig.appId = 'eb253cc7b40c4a8b82f0a5b6f93c2ce0';
  1631 + GlobalConfig.appCertificate = "";
  1632 + GlobalConfig.appRecordingKey = "";
  1633 +
1616 //文档服务器地址 1634 //文档服务器地址
1617 if (GlobalConfig.docList && GlobalConfig.docList.length > 0) { 1635 if (GlobalConfig.docList && GlobalConfig.docList.length > 0) {
1618 //doc上传地址,随机获取一个 1636 //doc上传地址,随机获取一个
@@ -1688,7 +1706,6 @@ export default class MessageEntrance extends Emiter { @@ -1688,7 +1706,6 @@ export default class MessageEntrance extends Emiter {
1688 } else { 1706 } else {
1689 //根据用户的userIp获取信息,获取服务列表选点,选点测速完成后才加入MCU 1707 //根据用户的userIp获取信息,获取服务列表选点,选点测速完成后才加入MCU
1690 this.loadServerJsonAndgetUserIpInfo(); 1708 this.loadServerJsonAndgetUserIpInfo();
1691 -  
1692 //初始化音视频通话sdk 1709 //初始化音视频通话sdk
1693 this._initWebRtcSdk(); 1710 this._initWebRtcSdk();
1694 } 1711 }
@@ -2565,6 +2582,10 @@ export default class MessageEntrance extends Emiter { @@ -2565,6 +2582,10 @@ export default class MessageEntrance extends Emiter {
2565 * 初始化webRtc 2582 * 初始化webRtc
2566 * */ 2583 * */
2567 _initWebRtcSdk(_params){ 2584 _initWebRtcSdk(_params){
  2585 + if(GlobalConfig.deviceType==1||GlobalConfig.deviceType==2){
  2586 + loger.warn("移动端不需要处理初始化webRtc");
  2587 + return ;
  2588 + }
2568 if(_webRtc){ 2589 if(_webRtc){
2569 _webRtc.initApp(_params) 2590 _webRtc.initApp(_params)
2570 } 2591 }
@@ -2573,6 +2594,10 @@ export default class MessageEntrance extends Emiter { @@ -2573,6 +2594,10 @@ export default class MessageEntrance extends Emiter {
2573 * 加入视频通话 2594 * 加入视频通话
2574 * */ 2595 * */
2575 _joinChannel(_params){ 2596 _joinChannel(_params){
  2597 + if(GlobalConfig.deviceType==1||GlobalConfig.deviceType==2){
  2598 + loger.warn("移动端不需要处理加入视频房间");
  2599 + return ;
  2600 + }
2576 if(_webRtc){ 2601 if(_webRtc){
2577 _webRtc.joinChannel(_params); 2602 _webRtc.joinChannel(_params);
2578 } 2603 }
@@ -2581,6 +2606,9 @@ export default class MessageEntrance extends Emiter { @@ -2581,6 +2606,9 @@ export default class MessageEntrance extends Emiter {
2581 * 离开视频通话频道 2606 * 离开视频通话频道
2582 * */ 2607 * */
2583 _leaveChannel(_params){ 2608 _leaveChannel(_params){
  2609 + if(GlobalConfig.deviceType==1||GlobalConfig.deviceType==2){
  2610 + return ;
  2611 + }
2584 if(_webRtc){ 2612 if(_webRtc){
2585 _webRtc.leaveChannel(_params); 2613 _webRtc.leaveChannel(_params);
2586 } 2614 }
@@ -2589,6 +2617,22 @@ export default class MessageEntrance extends Emiter { @@ -2589,6 +2617,22 @@ export default class MessageEntrance extends Emiter {
2589 * 发布流 2617 * 发布流
2590 * */ 2618 * */
2591 _publishMedia(_params){ 2619 _publishMedia(_params){
  2620 + //ios和安卓的只需要更新数据即可
  2621 + if(GlobalConfig.deviceType==1||GlobalConfig.deviceType==2){
  2622 + loger.log("调用webRtc推流");
  2623 + GlobalConfig.openCamera = EngineUtils.creatTimestamp();
  2624 + GlobalConfig.openMicrophones = GlobalConfig.openCamera;
  2625 + this.userDeviecStatusChange({
  2626 + nodeId: GlobalConfig.nodeId,
  2627 + userRole: GlobalConfig.userRole,
  2628 + userName: GlobalConfig.userName,
  2629 + userId: GlobalConfig.userId,
  2630 + openCamera: GlobalConfig.openCamera,
  2631 + openMicrophones: GlobalConfig.openMicrophones
  2632 + });
  2633 + return ;
  2634 + }
  2635 +
2592 if(_webRtc){ 2636 if(_webRtc){
2593 _webRtc.publish(_params); 2637 _webRtc.publish(_params);
2594 } 2638 }
@@ -2597,6 +2641,22 @@ export default class MessageEntrance extends Emiter { @@ -2597,6 +2641,22 @@ export default class MessageEntrance extends Emiter {
2597 * 停止发布流 2641 * 停止发布流
2598 * */ 2642 * */
2599 _unpublishMedia(_params){ 2643 _unpublishMedia(_params){
  2644 + //ios和安卓的只需要更新数据即可
  2645 + if(GlobalConfig.deviceType==1||GlobalConfig.deviceType==2){
  2646 + loger.log("调用webRtc停止推流");
  2647 + GlobalConfig.openCamera =0;
  2648 + GlobalConfig.openMicrophones =0;
  2649 + this.userDeviecStatusChange({
  2650 + nodeId: GlobalConfig.nodeId,
  2651 + userRole: GlobalConfig.userRole,
  2652 + userName: GlobalConfig.userName,
  2653 + userId: GlobalConfig.userId,
  2654 + openCamera: GlobalConfig.openCamera,
  2655 + openMicrophones: GlobalConfig.openMicrophones
  2656 + });
  2657 + return ;
  2658 + }
  2659 +
2600 if(_webRtc){ 2660 if(_webRtc){
2601 _webRtc.unpublish(_params); 2661 _webRtc.unpublish(_params);
2602 } 2662 }
@@ -58,6 +58,12 @@ class GlobalConfig { @@ -58,6 +58,12 @@ class GlobalConfig {
58 classInfo.ssTunnelAppURL = this.ssTunnelAppURL; 58 classInfo.ssTunnelAppURL = this.ssTunnelAppURL;
59 classInfo.currentSceneTableId = this.currentSceneTableId; //文档区域的模块显示 59 classInfo.currentSceneTableId = this.currentSceneTableId; //文档区域的模块显示
60 classInfo.serverAndLoacTimeDistanc = this.serverAndLoacTimeDistanc; 60 classInfo.serverAndLoacTimeDistanc = this.serverAndLoacTimeDistanc;
  61 + classInfo.appId = this.appId;
  62 + classInfo.appCertificate = this.appCertificate;
  63 + classInfo.appRecordingKey = this.appRecordingKey;
  64 + classInfo.channelId =this.channelId ;
  65 + classInfo.channelKey =this.channelKey ;
  66 + classInfo.userUid = this.userUid;
61 return classInfo; 67 return classInfo;
62 68
63 } 69 }
@@ -548,5 +554,15 @@ GlobalConfig.os="未知";//系统 @@ -548,5 +554,15 @@ GlobalConfig.os="未知";//系统
548 GlobalConfig.locationProtocol="http://";//https;或http: 554 GlobalConfig.locationProtocol="http://";//https;或http:
549 GlobalConfig.websocketProtocol="ws://";//wss或ws 555 GlobalConfig.websocketProtocol="ws://";//wss或ws
550 GlobalConfig.isHttps=false;//是否是https 556 GlobalConfig.isHttps=false;//是否是https
  557 +
  558 +
  559 +//webRtc
  560 +GlobalConfig.appId = 'eb253cc7b40c4a8b82f0a5b6f93c2ce0';
  561 +GlobalConfig.appCertificate = "";
  562 +GlobalConfig.appRecordingKey = "";
  563 +GlobalConfig.channelId = "";
  564 +GlobalConfig.channelKey = null;
  565 +GlobalConfig.userUid = 0;
  566 +
551 export default GlobalConfig; 567 export default GlobalConfig;
552 568
@@ -18,6 +18,7 @@ class WebRtcApe extends Emiter { @@ -18,6 +18,7 @@ class WebRtcApe extends Emiter {
18 this.appCertificate = ""; 18 this.appCertificate = "";
19 this.appRecordingKey = ""; 19 this.appRecordingKey = "";
20 20
  21 + this.channelKey=null;
21 this.channelId = ""; 22 this.channelId = "";
22 this.uid = 0; 23 this.uid = 0;
23 this.info = "" 24 this.info = ""
@@ -48,29 +49,30 @@ class WebRtcApe extends Emiter { @@ -48,29 +49,30 @@ class WebRtcApe extends Emiter {
48 } 49 }
49 50
50 initApp(_params) { 51 initApp(_params) {
51 - loger.log("AgoraRTC client init"); 52 + loger.log("初始化WebRtc");
52 if (_params) { 53 if (_params) {
53 this.appId = _params.appId; 54 this.appId = _params.appId;
54 } 55 }
55 if (this.client) { 56 if (this.client) {
56 this.client.init(this.appId, () => { 57 this.client.init(this.appId, () => {
57 - loger.log("AgoraRTC client init success"); 58 + loger.log("初始化WebRtc->成功");
58 }, (err)=> { 59 }, (err)=> {
59 - loger.error("AgoraRTC client init failed", err); 60 + loger.error("初始化WebRtc->失败", err);
  61 +
60 }); 62 });
61 this.addEvent(); 63 this.addEvent();
62 } 64 }
63 } 65 }
64 66
65 addEvent() { 67 addEvent() {
66 - loger.log("AgoraRTC addEvent"); 68 + loger.log("监听webRtc消息");
67 if (!this.client) { 69 if (!this.client) {
68 loger.log("addEvent error:client is null"); 70 loger.log("addEvent error:client is null");
69 return; 71 return;
70 } 72 }
71 this.channelKey = ""; 73 this.channelKey = "";
72 this.client.on('error', (err) => { 74 this.client.on('error', (err) => {
73 - loger.log("Got error msg:", err.reason); 75 + loger.log("WebRtc异常:", err.reason);
74 if (err.reason === 'DYNAMIC_KEY_TIMEOUT') { 76 if (err.reason === 'DYNAMIC_KEY_TIMEOUT') {
75 this.client.renewChannelKey(this.channelKey, ()=> { 77 this.client.renewChannelKey(this.channelKey, ()=> {
76 loger.log("Renew channel key successfully"); 78 loger.log("Renew channel key successfully");
@@ -113,12 +115,12 @@ class WebRtcApe extends Emiter { @@ -113,12 +115,12 @@ class WebRtcApe extends Emiter {
113 if (stream) { 115 if (stream) {
114 stream.stop(); 116 stream.stop();
115 $('#' + this.xdyRemote + stream.getId()).remove(); 117 $('#' + this.xdyRemote + stream.getId()).remove();
116 - loger.log(evt.uid + " leaved from this channel"); 118 + loger.log(evt.uid + " ->离开视频通话频道");
117 } 119 }
118 }); 120 });
119 this.client.on("active-speaker", (evt)=> { 121 this.client.on("active-speaker", (evt)=> {
120 let uid = evt.uid; 122 let uid = evt.uid;
121 - loger.log("update active speaker: client" + uid); 123 + loger.log("当前正在讲话的uid:" + uid);
122 }); 124 });
123 } 125 }
124 126
@@ -126,15 +128,15 @@ class WebRtcApe extends Emiter { @@ -126,15 +128,15 @@ class WebRtcApe extends Emiter {
126 this.channelId = _params.channelId||""; 128 this.channelId = _params.channelId||"";
127 this.uid = parseInt(_params.uid)||0; 129 this.uid = parseInt(_params.uid)||0;
128 this.info =_params.info || ""; 130 this.info =_params.info || "";
129 - let dynamic_key = null; 131 + this.channelKey = _params.channelKey||null;
130 132
131 - loger.log("AgoraRTC joinChannel","channelId:"+this.channelId,"uid:"+this.uid);  
132 - this.client.join(dynamic_key, ""+this.channelId, this.uid, (uid)=> { 133 + loger.log("加入视频通话频道->channelId:"+this.channelId,"uid:"+this.uid);
  134 + this.client.join(this.channelKey , ""+this.channelId, this.uid, (uid)=> {
133 this.uid = uid; 135 this.uid = uid;
134 - loger.log("User " + uid + " join channel successfully"); 136 + loger.log("加入视频通话频道->成功->channelId:"+this.channelId,"uid:"+this.uid);
135 this.openLoaclStream(); 137 this.openLoaclStream();
136 }, (err)=> { 138 }, (err)=> {
137 - loger.log("Join channel failed", err); 139 + loger.log("加入视频通话频道->失败->", err);
138 }); 140 });
139 } 141 }
140 142
@@ -156,7 +158,7 @@ class WebRtcApe extends Emiter { @@ -156,7 +158,7 @@ class WebRtcApe extends Emiter {
156 } 158 }
157 159
158 leaveChannel() { 160 leaveChannel() {
159 - loger.log("AgoraRTC joinChannel"); 161 + loger.log("离开视频通话频道");
160 if (!this.client) { 162 if (!this.client) {
161 return; 163 return;
162 } 164 }
@@ -172,11 +174,11 @@ class WebRtcApe extends Emiter { @@ -172,11 +174,11 @@ class WebRtcApe extends Emiter {
172 return; 174 return;
173 } 175 }
174 this.localStream.init(()=> { 176 this.localStream.init(()=> {
  177 + loger.log("webRtc->推流: ");
175 let viewName = this.localViewId.replace("#", ""); 178 let viewName = this.localViewId.replace("#", "");
176 - loger.log("getUserMedia successfully", this.localViewId);  
177 this.localStream.play(viewName); 179 this.localStream.play(viewName);
178 this.client.publish(this.localStream, (err)=> { 180 this.client.publish(this.localStream, (err)=> {
179 - loger.log("Publish local stream error: " + err); 181 + loger.log("webRtc->推流失败: " + err);
180 GlobalConfig.openCamera =0; 182 GlobalConfig.openCamera =0;
181 GlobalConfig.openMicrophones =0; 183 GlobalConfig.openMicrophones =0;
182 }); 184 });
@@ -193,16 +195,17 @@ class WebRtcApe extends Emiter { @@ -193,16 +195,17 @@ class WebRtcApe extends Emiter {
193 }); 195 });
194 196
195 }, (err)=> { 197 }, (err)=> {
196 - loger.log("getUserMedia failed", err); 198 + loger.log("webRtc->推流->本地流开启失败", err);
197 }); 199 });
198 } 200 }
199 201
200 unpublish() { 202 unpublish() {
  203 + loger.log("webRtc->停止推流 ");
201 if (!this.client||!this.localStream) { 204 if (!this.client||!this.localStream) {
202 return; 205 return;
203 } 206 }
204 this.client.unpublish(this.localStream, (err)=> { 207 this.client.unpublish(this.localStream, (err)=> {
205 - loger.log("Unpublish local stream failed" + err); 208 + loger.log("webRtc->停止推流->失败" + err);
206 }); 209 });
207 this.localStream.close(); 210 this.localStream.close();
208 $(this.localViewId).html(""); 211 $(this.localViewId).html("");