From f7dc5a650eb0ed2f38278a8bb9ec3368986027e1 Mon Sep 17 00:00:00 2001 From: liyong <liyong@3mang.com> Date: Mon, 24 Jul 2017 13:34:17 +0800 Subject: [PATCH] 1.修复媒体共享和伴音模块的seek处理问题;2.聊天模块增加图片消息;3增加踢人接口和第三方消息接口 --- src/EngineEntrance.js | 25 +++++++++++++++++++++++-- src/MessageTypes.js | 3 ++- src/apes/ChatApe.js | 2 +- src/apes/ConferApe.js | 20 ++++++++++++++++++-- src/apes/MediaSharedApe.js | 1 + src/apes/MusicSharedApe.js | 3 ++- src/apes/ThirdMessage.js | 9 ++++++++- 7 files changed, 55 insertions(+), 8 deletions(-) diff --git a/src/EngineEntrance.js b/src/EngineEntrance.js index c0079d9..a13a573 100644 --- a/src/EngineEntrance.js +++ b/src/EngineEntrance.js @@ -35,7 +35,7 @@ import QuestionApe from 'apes/QuestionApe'; import UTF8 from 'utf-8'; let loger = Loger.getLoger('McuClient'); -let _sdkInfo = { "version": "v1.49.1.20170724", "author": "www.3mang.com" }; +let _sdkInfo = { "version": "v1.50.7.20170724", "author": "www.3mang.com" }; //APE let _sass; @@ -168,6 +168,8 @@ export default class MessageEntrance extends Emiter { this.kickOutRosterFormNodeId= this._kickOutRosterFormNodeId.bind(this); //把指定nodeId的人踢出课堂 + this.sendThridChannelMessage=this._sendThridChannelMessage.bind(this);//通道第三方消息通道发送消息 + //录制回放 this.initRecordPlayback = this._initRecordPlayback.bind(this); this.startRecordPlayback = this._startRecordPlayback.bind(this); @@ -433,13 +435,21 @@ export default class MessageEntrance extends Emiter { GlobalConfig.isRecordPlayBack = false; //设置为非录制回放状态 GlobalConfig.classId = parseInt(_param.classId); GlobalConfig.portal = _param.portal; + + //H5处理 GlobalConfig.isH5=_param.isH5||false;//外部传入的参数,是否是H5 if(GlobalConfig.isH5==true){ GlobalConfig.platform = "H5"; GlobalConfig.deviceType=3//3是H5 loger.warn("设备类型是H5"); } - //GlobalConfig.userId = _param.userId || "0"; + + //IOS 安卓处理,需要外部传入摄像头和麦克风信息 + if(GlobalConfig.isMobile){ + GlobalConfig.cameras=_param.cameras||[]; + GlobalConfig.cameras=_param.microphones||[]; + } + //如果没有名字,随机起一个名字 GlobalConfig.userName = _param.userName || "user_" + (new Date().getTime() % 1000000); @@ -1057,6 +1067,17 @@ export default class MessageEntrance extends Emiter { } } + //通过第三方消息通道发送消息 + _sendThridChannelMessage(_param){ + if (!_mcu.connected) { + loger.warn(GlobalConfig.getCurrentStatus()); + return { "code": ApeConsts.RETURN_FAILED, "data": "" }; + } + if (_confer_ape) { + _confer_ape.onThirdReciveParentMessage(_param); + } + } + //将指定nodeId的人踢出课堂 _kickOutRosterFormNodeId(_param){ if (!_mcu.connected) { diff --git a/src/MessageTypes.js b/src/MessageTypes.js index d40ae76..85adbf0 100644 --- a/src/MessageTypes.js +++ b/src/MessageTypes.js @@ -39,7 +39,8 @@ MessageTypes.CLASS_UPDATE_TIMER = "class_update_timer"; //'class.update.timer';/ MessageTypes.CLASS_RECORD_STOP = "class_record_stop"; //;//停止录制 MessageTypes.CLASS_RECORD_START = "class_record_start"; //;//开始录制 MessageTypes.CLASS_RECORD_SUCCESS = "class_record_success"; ////操作录制状态成功 - +//第三方消息通道 +MessageTypes.RECEIVE_THIRD_MESSGAE="receive_third_message";//接收到第三方消息 //聊天模块事件定义 MessageTypes.CHAT_RECEIVE = "chat_receive_message"; // 'chat.receive'; diff --git a/src/apes/ChatApe.js b/src/apes/ChatApe.js index 1efdffe..84151a4 100644 --- a/src/apes/ChatApe.js +++ b/src/apes/ChatApe.js @@ -85,7 +85,7 @@ class ChatApe extends Ape { chatMsg.message = this._rCArrayBufferUtil.uint8ArrayToStr(chatReceivePdu.userData, 2); chatMsg.fromName = this._rCArrayBufferUtil.uint8ArrayToStr(chatReceivePdu.fromName, 2); chatMsg.fromRole = chatReceivePdu.fromRole; - + chatMsg.msgType=chatReceivePdu.msgType||0; loger.log('接收聊天消息.', chatMsg); this._emit(MessageTypes.CHAT_RECEIVE, chatMsg); diff --git a/src/apes/ConferApe.js b/src/apes/ConferApe.js index 8a1cc6b..8924ce1 100644 --- a/src/apes/ConferApe.js +++ b/src/apes/ConferApe.js @@ -739,7 +739,14 @@ class ConferApe extends Ape { //收到父级页面的消息,需要广播发送出去 onThirdReciveParentMessage(_msg) { loger.log('收到页面的消息->广播给其他模块->', _msg); - this.sendThirdBroadcastData({to: 0, message: _msg}); + //尝试将外部传入的数据转换为JSON 字符串 + let _message=_msg; + try{ + _message=JSON.parse(_msg); + }catch(err){ + + } + this.sendThirdBroadcastData({to: 0, message: _message}); } //发送第三方广播消息 @@ -759,7 +766,15 @@ class ConferApe extends Ape { thirdBroadcastSendPdu.initiator = this._classInfo.nodeId; //发起人 thirdBroadcastSendPdu.peer = parseInt(_param.to) || 0; //发送给谁,公聊的时候是0,私聊的时候是指定的用户id thirdBroadcastSendPdu.isPublic = true; - thirdBroadcastSendPdu.message = this._rCArrayBufferUtil.strToUint8Array("h5" + _param.message); + let messageStr=_param.message||""; + + //尝试把信息转换为JSON 字符串,如果是字符串就不需要转 + try{ + messageStr=JSON.stringify(messageStr); + }catch (err){ + + } + thirdBroadcastSendPdu.message = this._rCArrayBufferUtil.strToUint8Array("h5" + messageStr); if (!thirdBroadcastSendPdu.isPublic && 0 != thirdBroadcastSendPdu.peer) { //发送给制定的人 @@ -780,6 +795,7 @@ class ConferApe extends Ape { //loger.log("监听第三方消息通道消息->1", thirdMessage); thirdMessage.message = this._rCArrayBufferUtil.uint8ArrayToStr(thirdBroadcastReceivePdu.message, 2); loger.log("监听第三方消息通道消息->", thirdMessage); + this._emit(MessageTypes.RECEIVE_THIRD_MESSGAE,thirdMessage); if (this.thirdMessage) { this.thirdMessage.sendMessageToParent(thirdMessage.message); } diff --git a/src/apes/MediaSharedApe.js b/src/apes/MediaSharedApe.js index 8ad406e..c18a704 100644 --- a/src/apes/MediaSharedApe.js +++ b/src/apes/MediaSharedApe.js @@ -405,6 +405,7 @@ class MediaSharedApe extends Ape { getMediaPackFullInfo.mediaVolume==this.lastActiveData.mediaVolume){ let timeDistance=Math.abs(new Date().getTime()-parseInt(this.lastActiveData.time))/1000; let seekDistance=Math.abs(getMediaPackFullInfo.seek-this.lastActiveData.seek)-timeDistance; + seekDistance=Math.abs(seekDistance); if(seekDistance<=5){ //记录最后一次的数据 loger.warn("媒体共享更新数据->数据只有SEEK发生改变,低于5秒不需要再更新->timeDistance:"+timeDistance+"->seekDistance"+seekDistance); diff --git a/src/apes/MusicSharedApe.js b/src/apes/MusicSharedApe.js index e055841..0757d94 100644 --- a/src/apes/MusicSharedApe.js +++ b/src/apes/MusicSharedApe.js @@ -399,10 +399,11 @@ class MusicSharedApe extends Ape { if(this.lastActiveData&&this.lastActiveData.status==1){ if(getMusicPackFullInfo&& getMusicPackFullInfo.status==1&& - getMusicPackFullInfo.mediaVolume==this.lastActiveData.mediaVolume){ + getMusicPackFullInfo.musicVolume==this.lastActiveData.musicVolume){ let timeDistance=Math.abs(new Date().getTime()-parseInt(this.lastActiveData.time))/1000; let seekDistance=Math.abs(getMusicPackFullInfo.seek-this.lastActiveData.seek)-timeDistance; + seekDistance=Math.abs(seekDistance); if(seekDistance<5){ //记录最后一次的数据 loger.warn("伴音更新数据->数据只有SEEK发生改变,低于5秒不需要再更新->timeDistance:"+timeDistance+"->seekDistance"+seekDistance); diff --git a/src/apes/ThirdMessage.js b/src/apes/ThirdMessage.js index abbeb3e..aec9792 100644 --- a/src/apes/ThirdMessage.js +++ b/src/apes/ThirdMessage.js @@ -26,8 +26,15 @@ class ThirdMessage extends Emiter{ return; } if(this.messenger){ + let sendMsg=""; + //尝试转换为JSON 字符串 + try{ + sendMsg=JSON.stringify(_msg); + }catch (err){ + sendMsg=_msg; + } loger.log('发送消息给父级页面->',_msg); - this.messenger.send(_msg); + this.messenger.send(sendMsg); } } //收到父级页面的消息 -- libgit2 0.24.0