正在显示
10 个修改的文件
包含
271 行增加
和
25 行删除
dist/McuClient.js
已删除
100644 → 0
此 diff 太大无法显示。
| @@ -102,12 +102,22 @@ export default class MessageEntrance extends Emiter { | @@ -102,12 +102,22 @@ export default class MessageEntrance extends Emiter { | ||
| 102 | //videoApe | 102 | //videoApe |
| 103 | this.getPlayVideoPath=this._getPlayVideoPath; | 103 | this.getPlayVideoPath=this._getPlayVideoPath; |
| 104 | this.getPublishVideoPath=this._getPublishVideoPath; | 104 | this.getPublishVideoPath=this._getPublishVideoPath; |
| 105 | + this.publishVideo=this._publishVideo; | ||
| 106 | + this.stopPublishVideo=this._stopPublishVideo; | ||
| 107 | + | ||
| 105 | 108 | ||
| 106 | //whiteBoradApe | 109 | //whiteBoradApe |
| 107 | this.sendInsertAnnotaion=this._sendInsertAnnotaion; | 110 | this.sendInsertAnnotaion=this._sendInsertAnnotaion; |
| 108 | //this.sendUpdaterAnnotaion=this._sendUpdaterAnnotaion;//暂时关闭更新接口 | 111 | //this.sendUpdaterAnnotaion=this._sendUpdaterAnnotaion;//暂时关闭更新接口 |
| 109 | this.sendDeleteAnnotaion=this._sendDeleteAnnotaion; | 112 | this.sendDeleteAnnotaion=this._sendDeleteAnnotaion; |
| 110 | this.sendDeleteAllAnnotation=this._sendDeleteAllAnnotation; | 113 | this.sendDeleteAllAnnotation=this._sendDeleteAllAnnotation; |
| 114 | + | ||
| 115 | + //DocApe | ||
| 116 | + this.sendDocumentUpload= this._sendDocumentUpload;//上传文档 | ||
| 117 | + this.sendDocumentSwitch= this._sendDocumentSwitch; //切换文档 | ||
| 118 | + this.sendDocumentDelete= this. _sendDocumentDelete;//删除文档 | ||
| 119 | + this.sendDocumentCommand= this._sendDocumentCommand;//操作文档(翻页、缩放、滚动...) | ||
| 120 | + | ||
| 111 | //debug | 121 | //debug |
| 112 | //this.setDebugData=this._setDebugData; | 122 | //this.setDebugData=this._setDebugData; |
| 113 | } | 123 | } |
| @@ -295,19 +305,26 @@ export default class MessageEntrance extends Emiter { | @@ -295,19 +305,26 @@ export default class MessageEntrance extends Emiter { | ||
| 295 | _getPlayVideoPath(_param){ | 305 | _getPlayVideoPath(_param){ |
| 296 | if(_video_ape){ | 306 | if(_video_ape){ |
| 297 | return _video_ape.getPlayVideoPath(_param); | 307 | return _video_ape.getPlayVideoPath(_param); |
| 298 | - }else { | ||
| 299 | - return {"code":1,"data":"获取播放地址失败"}; | ||
| 300 | } | 308 | } |
| 301 | } | 309 | } |
| 302 | 310 | ||
| 303 | _getPublishVideoPath(_param){ | 311 | _getPublishVideoPath(_param){ |
| 304 | if(_video_ape){ | 312 | if(_video_ape){ |
| 305 | return _video_ape.getPublishVideoPath(_param); | 313 | return _video_ape.getPublishVideoPath(_param); |
| 306 | - }else { | ||
| 307 | - return {"code":1,"data":"获取推流地址失败"}; | ||
| 308 | } | 314 | } |
| 309 | } | 315 | } |
| 310 | 316 | ||
| 317 | + _publishVideo(_param){ | ||
| 318 | + if(_video_ape){ | ||
| 319 | + return _video_ape.publishVideo(_param); | ||
| 320 | + } | ||
| 321 | + } | ||
| 322 | + | ||
| 323 | + _stopPublishVideo(_param){ | ||
| 324 | + if(_video_ape){ | ||
| 325 | + return _video_ape.stopPublishVideo(_param); | ||
| 326 | + } | ||
| 327 | + } | ||
| 311 | 328 | ||
| 312 | //WhiteBoardApe | 329 | //WhiteBoardApe |
| 313 | // 添加标注,发送信息 | 330 | // 添加标注,发送信息 |
| @@ -335,6 +352,32 @@ export default class MessageEntrance extends Emiter { | @@ -335,6 +352,32 @@ export default class MessageEntrance extends Emiter { | ||
| 335 | } | 352 | } |
| 336 | } | 353 | } |
| 337 | 354 | ||
| 355 | + //DocApe | ||
| 356 | + //上传文档 | ||
| 357 | + _sendDocumentUpload(_param){ | ||
| 358 | + if(_doc_ape){ | ||
| 359 | + _doc_ape.documentUpload(_param); | ||
| 360 | + } | ||
| 361 | + } | ||
| 362 | + //切换文档 | ||
| 363 | + _sendDocumentSwitch(_param){ | ||
| 364 | + if(_doc_ape){ | ||
| 365 | + _doc_ape.documentSwitch(_param); | ||
| 366 | + } | ||
| 367 | + } | ||
| 368 | + //删除文档 | ||
| 369 | + _sendDocumentDelete(_param){ | ||
| 370 | + if(_doc_ape){ | ||
| 371 | + _doc_ape.documentDelete(_param); | ||
| 372 | + } | ||
| 373 | + } | ||
| 374 | + //操作文档(翻页、缩放、滚动...) | ||
| 375 | + _sendDocumentCommand(_param){ | ||
| 376 | + if(_doc_ape){ | ||
| 377 | + _doc_ape.documentCommand(_param); | ||
| 378 | + } | ||
| 379 | + } | ||
| 380 | + | ||
| 338 | // 白板笔记更新(svg) | 381 | // 白板笔记更新(svg) |
| 339 | annoUpdateHandler(annoInfo) { | 382 | annoUpdateHandler(annoInfo) { |
| 340 | const activeDocId = _confer_ape.activeDocId; | 383 | const activeDocId = _confer_ape.activeDocId; |
| @@ -25,5 +25,12 @@ class EngineUtils{ | @@ -25,5 +25,12 @@ class EngineUtils{ | ||
| 25 | } | 25 | } |
| 26 | return null; | 26 | return null; |
| 27 | } | 27 | } |
| 28 | + | ||
| 29 | + //生成nodeId的随机数 | ||
| 30 | + static generateNodeID(){ | ||
| 31 | + let time = new Date().getTime(); | ||
| 32 | + let nodeID:int = time % 1000000000;//time后9位 | ||
| 33 | + return nodeID; | ||
| 34 | + } | ||
| 28 | } | 35 | } |
| 29 | export default EngineUtils; | 36 | export default EngineUtils; |
| @@ -37,6 +37,7 @@ MessageTypes.CHAT_RECEIVE = 'chat.receive'; | @@ -37,6 +37,7 @@ MessageTypes.CHAT_RECEIVE = 'chat.receive'; | ||
| 37 | //视频模块事件定义 | 37 | //视频模块事件定义 |
| 38 | MessageTypes.VIDEO_RECEIVE = 'video.receive'; | 38 | MessageTypes.VIDEO_RECEIVE = 'video.receive'; |
| 39 | 39 | ||
| 40 | + | ||
| 40 | //文档模块事件定义 | 41 | //文档模块事件定义 |
| 41 | MessageTypes.DOC_SHOW = 'document.show'; | 42 | MessageTypes.DOC_SHOW = 'document.show'; |
| 42 | MessageTypes.DOC_UPLOAD='document.upload';//上传文档 | 43 | MessageTypes.DOC_UPLOAD='document.upload';//上传文档 |
| @@ -54,6 +54,7 @@ class ConferApe extends Ape { | @@ -54,6 +54,7 @@ class ConferApe extends Ape { | ||
| 54 | ApeConsts.CONFERENCE_OBJ_COUNTER_NAME, ApeConsts.CONFERENCE_OBJ_COUNTER_TAG, 0, new ArrayBuffer); | 54 | ApeConsts.CONFERENCE_OBJ_COUNTER_NAME, ApeConsts.CONFERENCE_OBJ_COUNTER_TAG, 0, new ArrayBuffer); |
| 55 | 55 | ||
| 56 | this.on(pdu.RCPDU_SESSION_JOIN_RESPONSE, this._joinSessionHandler.bind(this)); | 56 | this.on(pdu.RCPDU_SESSION_JOIN_RESPONSE, this._joinSessionHandler.bind(this)); |
| 57 | + | ||
| 57 | } | 58 | } |
| 58 | 59 | ||
| 59 | _joinSessionHandler(confInfo) { | 60 | _joinSessionHandler(confInfo) { |
| @@ -155,7 +156,6 @@ class ConferApe extends Ape { | @@ -155,7 +156,6 @@ class ConferApe extends Ape { | ||
| 155 | 156 | ||
| 156 | //更新人员列表数据 | 157 | //更新人员列表数据 |
| 157 | rosterUpdateHandler(nodeId, nodeData) { | 158 | rosterUpdateHandler(nodeId, nodeData) { |
| 158 | - | ||
| 159 | //loger.log("更新人员列表数据 rosterUpdateHandler"); | 159 | //loger.log("更新人员列表数据 rosterUpdateHandler"); |
| 160 | if (nodeData.role === ApeConsts.NR_MASTER || | 160 | if (nodeData.role === ApeConsts.NR_MASTER || |
| 161 | nodeData.role === ApeConsts.NR_SLAVE) { | 161 | nodeData.role === ApeConsts.NR_SLAVE) { |
| @@ -18,9 +18,11 @@ import ApeConsts from './ApeConsts'; | @@ -18,9 +18,11 @@ import ApeConsts from './ApeConsts'; | ||
| 18 | import pdu from 'pdus'; | 18 | import pdu from 'pdus'; |
| 19 | import Loger from 'Loger'; | 19 | import Loger from 'Loger'; |
| 20 | import MessageTypes from 'MessageTypes'; | 20 | import MessageTypes from 'MessageTypes'; |
| 21 | +import GlobalConfig from 'GlobalConfig'; | ||
| 22 | +import EngineUtils from 'EngineUtils'; | ||
| 21 | 23 | ||
| 22 | let loger = Loger.getLoger('DocApe'); | 24 | let loger = Loger.getLoger('DocApe'); |
| 23 | - | 25 | +let itemIdx=0;//table插入新数据的计数id,目前用时间戳 |
| 24 | class DocApe extends Ape { | 26 | class DocApe extends Ape { |
| 25 | constructor() { | 27 | constructor() { |
| 26 | super( | 28 | super( |
| @@ -38,21 +40,176 @@ class DocApe extends Ape { | @@ -38,21 +40,176 @@ class DocApe extends Ape { | ||
| 38 | // 延迟 | 40 | // 延迟 |
| 39 | this._apeDelayed = true; | 41 | this._apeDelayed = true; |
| 40 | } | 42 | } |
| 43 | + /////////////发送数据操作////////////////////////////////////////////////////// | ||
| 44 | + //上传文档 | ||
| 45 | + documentUpload(paramInfo){ | ||
| 46 | + if(paramInfo==null||EngineUtils.isEmptyObject(paramInfo)){ | ||
| 47 | + loger.log('documentUpload失败,参数错误'); | ||
| 48 | + this._emit(MessageTypes.MCU_ERROR,MessageTypes.ERR_APE_INTERFACE_PARAM_WRONG); | ||
| 49 | + return ; | ||
| 50 | + } | ||
| 51 | + | ||
| 52 | + itemIdx=parseInt(Date.now()/1000); | ||
| 53 | + let docDataModelPdu = this.packPdu(paramInfo,itemIdx); | ||
| 54 | + if(docDataModelPdu==null){ | ||
| 55 | + loger.log('documentUpload失败,参数错误'); | ||
| 56 | + this._emit(MessageTypes.MCU_ERROR,MessageTypes.ERR_APE_INTERFACE_PARAM_WRONG); | ||
| 57 | + return ; | ||
| 58 | + } | ||
| 59 | + console.log(docDataModelPdu); | ||
| 60 | + | ||
| 61 | + let tableItemPdu = new pdu['RCRegistryTableItemPdu']; | ||
| 62 | + tableItemPdu.itemIdx=itemIdx;//直接用时间戳作为id | ||
| 63 | + tableItemPdu.registerObjId=ApeConsts.DOCSHARING_OBJ_TABLE_ID_H5; | ||
| 64 | + tableItemPdu.owner = 0;//收到flash的是这个值,不清楚先写固定 | ||
| 65 | + tableItemPdu.itemData =docDataModelPdu.toArrayBuffer(); | ||
| 66 | + | ||
| 67 | + //insert | ||
| 68 | + let tableInsertItemPdu = new pdu['RCRegistryTableInsertItemPdu']; | ||
| 69 | + //optional RCPduType_E type = 1 [default = RCPDU_REG_TABLE_UPDATE_PDU]; | ||
| 70 | + //repeated RCRegistryTableItemPdu items = 2; | ||
| 71 | + tableInsertItemPdu.type = pdu.RCPDU_REG_TABLE_INSERT_PDU;// | ||
| 72 | + tableInsertItemPdu.items.push(tableItemPdu); | ||
| 73 | + | ||
| 74 | + let updateObjPdu = new pdu['RCRegistryUpdateObjPdu']; | ||
| 75 | + updateObjPdu.objId = ApeConsts.DOCSHARING_OBJ_TABLE_ID_H5; | ||
| 76 | + updateObjPdu.subType = tableInsertItemPdu.type; | ||
| 77 | + updateObjPdu.userData = tableInsertItemPdu.toArrayBuffer(); | ||
| 78 | + | ||
| 79 | + //同步 | ||
| 80 | + let adapterItemPdu = new pdu['RCAdapterItemPdu']; | ||
| 81 | + adapterItemPdu.type = pdu.RCPDU_REG_UPDATE_OBJ; | ||
| 82 | + adapterItemPdu.itemData = updateObjPdu.toArrayBuffer(); | ||
| 83 | + | ||
| 84 | + let adapterPdu = new pdu['RCAdapterPdu']; | ||
| 85 | + adapterPdu.type = pdu.RCPDU_REG_ADAPTER; | ||
| 86 | + adapterPdu.item.push(adapterItemPdu); | ||
| 87 | + | ||
| 88 | + console.log("文档upload tableItemPdu.itemIdx="+tableItemPdu.itemIdx); | ||
| 89 | + this.sendUniform(adapterPdu,true); | ||
| 90 | + } | ||
| 91 | + //切换文档 | ||
| 92 | + documentSwitch(paramInfo){ | ||
| 93 | + | ||
| 94 | + } | ||
| 95 | + | ||
| 96 | + //操作文档(翻页、缩放、滚动...) | ||
| 97 | + documentCommand(paramInfo){ | ||
| 98 | + | ||
| 99 | + } | ||
| 100 | + | ||
| 101 | + //删除文档 | ||
| 102 | + documentDelete(paramInfo){ | ||
| 103 | + //{"itemIdx":itemIdx} | ||
| 104 | + let tableDeleteItemPdu = new pdu['RCRegistryTableDeleteItemPdu']; | ||
| 105 | + //optional RCPduType_E type = 1 [default = RCPDU_REG_TABLE_DELETE_PDU]; | ||
| 106 | + // repeated uint32 item_idx = 2; | ||
| 107 | + tableDeleteItemPdu.type = pdu.RCPDU_REG_TABLE_DELETE_PDU;// | ||
| 108 | + tableDeleteItemPdu.itemIdx=parseInt(paramInfo.itemIdx);//这里需要设置要删除的数据的itemIdx,每条数据的这个id都不一样 | ||
| 109 | + | ||
| 110 | + let updateObjPdu = new pdu['RCRegistryUpdateObjPdu']; | ||
| 111 | + updateObjPdu.objId = ApeConsts.DOCSHARING_OBJ_TABLE_ID_H5; | ||
| 112 | + updateObjPdu.subType = tableDeleteItemPdu.type; | ||
| 113 | + updateObjPdu.userData = tableDeleteItemPdu.toArrayBuffer(); | ||
| 114 | + | ||
| 115 | + //同步 | ||
| 116 | + let adapterItemPdu = new pdu['RCAdapterItemPdu']; | ||
| 117 | + adapterItemPdu.type = pdu.RCPDU_REG_UPDATE_OBJ; | ||
| 118 | + adapterItemPdu.itemData = updateObjPdu.toArrayBuffer(); | ||
| 119 | + | ||
| 120 | + let adapterPdu = new pdu['RCAdapterPdu']; | ||
| 121 | + adapterPdu.type = pdu.RCPDU_REG_ADAPTER; | ||
| 122 | + adapterPdu.item.push(adapterItemPdu); | ||
| 123 | + | ||
| 124 | + console.log("文档发送删除数据============="+tableDeleteItemPdu.itemIdx); | ||
| 125 | + this.sendUniform(adapterPdu,true); | ||
| 126 | + } | ||
| 41 | 127 | ||
| 128 | + ///////白板数据的封包和解包///////////////////////////////////////// | ||
| 129 | + packPdu(_param,_itemIdx){ | ||
| 130 | + //验证坐标点集合数组是否合法 | ||
| 131 | + if(_param.pointGroup==null||_param.pointGroup.length<1){ | ||
| 132 | + this._emit(MessageTypes.MCU_ERROR,MessageTypes.ERR_APE_INTERFACE_PARAM_WRONG); | ||
| 133 | + return null; | ||
| 134 | + } | ||
| 135 | + /* required uint32 item_idx=1;//唯一标识 | ||
| 136 | + required uint32 owner=2; | ||
| 137 | + optional uint32 from=3; | ||
| 138 | + optional uint32 cur_page_no=4; | ||
| 139 | + optional uint32 page_num =5; | ||
| 140 | + required string filetype=6; | ||
| 141 | + required string doc_type=7; | ||
| 142 | + required string relative_url=8;//文档相对地址 | ||
| 143 | + optional string url =9;//文档地址 | ||
| 144 | + optional uint32 cur_V=10; | ||
| 145 | + optional uint32 cur_H=11; | ||
| 146 | + optional uint32 scale=12; | ||
| 147 | + optional bool visible=13; | ||
| 148 | + optional uint32 action=14;//0,无操作, 1翻页、2.显示/隐藏 | ||
| 149 | + optional string id=15;//文档在服务器数据库中的唯一id*/ | ||
| 150 | + | ||
| 151 | + //判断type类型,根据type设置不同的参数 | ||
| 152 | + let docModelPdu =new pdu['RCDocSendDataModel']; | ||
| 153 | + docModelPdu.itemIdx=_itemIdx; | ||
| 154 | + docModelPdu.owner=GlobalConfig.nodeId; | ||
| 155 | + docModelPdu.from=GlobalConfig.nodeId; | ||
| 156 | + docModelPdu.curPageNo = 1; | ||
| 157 | + docModelPdu.pageNum =10; | ||
| 158 | + docModelPdu.fileType=_param.fileType||""; | ||
| 159 | + docModelPdu.docType="pdf2swf"; | ||
| 160 | + docModelPdu.url = "http://101.200.150.192/DocSharing/data/h5test/20170206-171100025/7e9c4178cac1133e0dd9d5b583439122.jpg"; | ||
| 161 | + docModelPdu.relativeUrl="/DocSharing/data/h5test/20170206-171100025/7e9c4178cac1133e0dd9d5b583439122.jpg"; | ||
| 162 | + docModelPdu.curV=0; | ||
| 163 | + docModelPdu.curH=0; | ||
| 164 | + docModelPdu.scale=1; | ||
| 165 | + docModelPdu.visible=false; | ||
| 166 | + docModelPdu.action=0;//0,无操作, 1翻页、2.显示/隐藏 | ||
| 167 | + docModelPdu.id=_param.id||"";//文档在服务器数据库中的唯一id | ||
| 168 | + return docModelPdu; | ||
| 169 | + } | ||
| 170 | + | ||
| 171 | + unPackPdu(owner, itemIdx,itemData){ | ||
| 172 | + this.docList[itemIdx] = itemData; | ||
| 173 | + try{ | ||
| 174 | + console.log("文档收到数据===unPackPdu "); | ||
| 175 | + let docModelPdu= pdu['RCDocSendDataModel'].decode(itemData); | ||
| 176 | + //console.log(whiteBoardModelPdu); | ||
| 177 | + loger.log(docModelPdu); | ||
| 178 | + return docModelPdu; | ||
| 179 | + }catch (err){ | ||
| 180 | + console.log("unPackPdu Pdu解析错误,itemIdx="+itemIdx+" err:"+err.message); | ||
| 181 | + } | ||
| 182 | + return null; | ||
| 183 | + } | ||
| 184 | + | ||
| 185 | + /////收到消息处理///////////////////////////////////////////////////////////////////////////////// | ||
| 42 | tableInsertHandler(owner, itemIdx, itemData) { | 186 | tableInsertHandler(owner, itemIdx, itemData) { |
| 43 | //this.tableUpdateHandler(owner, tableId, itemData); | 187 | //this.tableUpdateHandler(owner, tableId, itemData); |
| 44 | - let itemDataInfo = pdu['RCDocSendDataRequestPdu'].decode(itemData); | 188 | + //loger.log('tableInsertHandler---',itemData); |
| 189 | + let itemDataInfo = this.unPackPdu(owner, itemIdx, itemData); | ||
| 45 | loger.log('tableInsertHandler',itemDataInfo); | 190 | loger.log('tableInsertHandler',itemDataInfo); |
| 46 | } | 191 | } |
| 47 | 192 | ||
| 48 | - tableDeleteHandler(itemIdx, itemData){ | 193 | + tableDeleteHandler(object_id, tableDeleteData){ |
| 49 | /*const re={}; | 194 | /*const re={}; |
| 50 | re.type=ApeConsts.DOCUMENT_DEL; | 195 | re.type=ApeConsts.DOCUMENT_DEL; |
| 51 | this._emit(MessageTypes.DOC_DELETE, re);*/ | 196 | this._emit(MessageTypes.DOC_DELETE, re);*/ |
| 52 | 197 | ||
| 198 | + loger.log('tableDeleteHandler',object_id,tableDeleteData);//["tableDeleteHandler",1179649,{"type":231,"itemIdx":[1486301768]}] | ||
| 199 | + if(tableDeleteData&&tableDeleteData.itemIdx){ | ||
| 200 | + let len=tableDeleteData.itemIdx.length; | ||
| 201 | + let itemIdxs=tableDeleteData.itemIdx; | ||
| 202 | + for (let i=0;i<len;i++){ | ||
| 203 | + if(this.docList[itemIdxs[i]]){ | ||
| 204 | + delete this.docList[itemIdxs[i]]; | ||
| 205 | + loger.log("删除文档数据:",itemIdxs[i],"当前剩余的文档数据",this.docList); | ||
| 206 | + } | ||
| 207 | + } | ||
| 208 | + } | ||
| 53 | } | 209 | } |
| 54 | tableUpdateHandler(owner, itemIdx, itemData) { | 210 | tableUpdateHandler(owner, itemIdx, itemData) { |
| 55 | - let itemDataInfo = pdu['RCDocSendDataRequestPdu'].decode(itemData); | 211 | + //let itemDataInfo = pdu['RCDocSendDataRequestPdu'].decode(itemData); |
| 212 | + let itemDataInfo = this.unPackPdu(owner, itemIdx, itemData); | ||
| 56 | loger.log('tableUpdateHandler',itemDataInfo); | 213 | loger.log('tableUpdateHandler',itemDataInfo); |
| 57 | /*try { | 214 | /*try { |
| 58 | const recordInfo = pdu['RCDocSendDataRequestPdu'].decode(itemData); | 215 | const recordInfo = pdu['RCDocSendDataRequestPdu'].decode(itemData); |
| @@ -45,16 +45,30 @@ class VideoChat extends Ape { | @@ -45,16 +45,30 @@ class VideoChat extends Ape { | ||
| 45 | // ape listeners | 45 | // ape listeners |
| 46 | this.on(pdu.RCPDU_VIDEO_SEND_DATA_REQUEST, this.videoIncomingHandler.bind(this)); | 46 | this.on(pdu.RCPDU_VIDEO_SEND_DATA_REQUEST, this.videoIncomingHandler.bind(this)); |
| 47 | } | 47 | } |
| 48 | - | 48 | + /////////////发送数据操作////////////////////////////////////////////////////// |
| 49 | //获取播流地址 | 49 | //获取播流地址 |
| 50 | getPlayVideoPath(_param){ | 50 | getPlayVideoPath(_param){ |
| 51 | + loger.log('getPlayVideoPath'); | ||
| 51 | return {"code":0,"data":"播放流地址XXXXXXXXXXXXXXXXXXXXX"}; | 52 | return {"code":0,"data":"播放流地址XXXXXXXXXXXXXXXXXXXXX"}; |
| 52 | } | 53 | } |
| 53 | //获取推流地址 | 54 | //获取推流地址 |
| 54 | getPublishVideoPath(_param){ | 55 | getPublishVideoPath(_param){ |
| 56 | + loger.log('getPublishVideoPath'); | ||
| 55 | return {"code":0,"data":"推流地址XXXXXXXXXXXXXXXXXXXXXXX"}; | 57 | return {"code":0,"data":"推流地址XXXXXXXXXXXXXXXXXXXXXXX"}; |
| 56 | } | 58 | } |
| 57 | 59 | ||
| 60 | + //推流 | ||
| 61 | + publishVideo(_param){ | ||
| 62 | + loger.log('publishVideo'); | ||
| 63 | + } | ||
| 64 | + //停止推流 | ||
| 65 | + stopPublishVideo(_param){ | ||
| 66 | + loger.log('stopPublishVideo.'); | ||
| 67 | + } | ||
| 68 | + | ||
| 69 | + | ||
| 70 | + /////收到消息处理///////////////////////////////////////////////////////////////////////////////// | ||
| 71 | + | ||
| 58 | // 视频消息处理 | 72 | // 视频消息处理 |
| 59 | videoIncomingHandler(videoBuffer) { | 73 | videoIncomingHandler(videoBuffer) { |
| 60 | let videoReceivePdu = pdu['VideoSendDataRequestPdu'].decode(videoBuffer); | 74 | let videoReceivePdu = pdu['VideoSendDataRequestPdu'].decode(videoBuffer); |
| @@ -261,8 +261,8 @@ class WhiteBoardApe extends Ape { | @@ -261,8 +261,8 @@ class WhiteBoardApe extends Ape { | ||
| 261 | whiteBoardModelPdu.type =_param.type; | 261 | whiteBoardModelPdu.type =_param.type; |
| 262 | whiteBoardModelPdu.itemIdx =_itemIdx; | 262 | whiteBoardModelPdu.itemIdx =_itemIdx; |
| 263 | whiteBoardModelPdu.initiator =GlobalConfig.nodeId; | 263 | whiteBoardModelPdu.initiator =GlobalConfig.nodeId; |
| 264 | - whiteBoardModelPdu.parentId=ApeConsts.WHITEBOARD_OBJ_TABLE_ID; | ||
| 265 | - whiteBoardModelPdu.pageNum=_param.pageNum||1; | 264 | + whiteBoardModelPdu.parentId=_param.parentId||0; |
| 265 | + whiteBoardModelPdu.curPage=_param.curPage||1; | ||
| 266 | whiteBoardModelPdu.pointGroup =EngineUtils.arrayToJsonString(_param.pointGroup); | 266 | whiteBoardModelPdu.pointGroup =EngineUtils.arrayToJsonString(_param.pointGroup); |
| 267 | whiteBoardModelPdu.color=_param.color||"#000000"; | 267 | whiteBoardModelPdu.color=_param.color||"#000000"; |
| 268 | 268 | ||
| @@ -274,7 +274,9 @@ class WhiteBoardApe extends Ape { | @@ -274,7 +274,9 @@ class WhiteBoardApe extends Ape { | ||
| 274 | console.log("白板收到数据===unPackPdu "); | 274 | console.log("白板收到数据===unPackPdu "); |
| 275 | let whiteBoardModelPdu= pdu['RCWhiteBoardDataModel'].decode(itemData); | 275 | let whiteBoardModelPdu= pdu['RCWhiteBoardDataModel'].decode(itemData); |
| 276 | //console.log(whiteBoardModelPdu); | 276 | //console.log(whiteBoardModelPdu); |
| 277 | - loger.log(whiteBoardModelPdu); | 277 | + //loger.log(whiteBoardModelPdu); |
| 278 | + let _pointGroup= EngineUtils.arrayFromJsonString(whiteBoardModelPdu.pointGroup); | ||
| 279 | + whiteBoardModelPdu.pointGroup=_pointGroup; | ||
| 278 | return whiteBoardModelPdu; | 280 | return whiteBoardModelPdu; |
| 279 | }catch (err){ | 281 | }catch (err){ |
| 280 | console.log("unPackPdu Pdu解析错误,itemIdx="+itemIdx+" err:"+err.message); | 282 | console.log("unPackPdu Pdu解析错误,itemIdx="+itemIdx+" err:"+err.message); |
| @@ -300,6 +302,7 @@ class WhiteBoardApe extends Ape { | @@ -300,6 +302,7 @@ class WhiteBoardApe extends Ape { | ||
| 300 | }*/ | 302 | }*/ |
| 301 | let whiteBoardModel=this.unPackPdu(owner, itemIdx,itemData); | 303 | let whiteBoardModel=this.unPackPdu(owner, itemIdx,itemData); |
| 302 | loger.log('tableInsertHandler',whiteBoardModel); | 304 | loger.log('tableInsertHandler',whiteBoardModel); |
| 305 | + this._emit(MessageTypes.WHITEBOARD_ANNOTAION_INSERT,whiteBoardModel); | ||
| 303 | } | 306 | } |
| 304 | 307 | ||
| 305 | tableUpdateHandler(owner, itemIdx, itemData) { | 308 | tableUpdateHandler(owner, itemIdx, itemData) { |
| @@ -332,6 +335,8 @@ class WhiteBoardApe extends Ape { | @@ -332,6 +335,8 @@ class WhiteBoardApe extends Ape { | ||
| 332 | } else { | 335 | } else { |
| 333 | loger.log('白板动作忽略,类型:', ApeConsts(recordInfo.type)); | 336 | loger.log('白板动作忽略,类型:', ApeConsts(recordInfo.type)); |
| 334 | }*/ | 337 | }*/ |
| 338 | + | ||
| 339 | + this._emit(MessageTypes.WHITEBOARD_ANNOTATION_UPDATE,whiteBoardModel); | ||
| 335 | } | 340 | } |
| 336 | tableDeleteHandler(object_id, tableDeleteData){ | 341 | tableDeleteHandler(object_id, tableDeleteData){ |
| 337 | // console.log("白板收到数据,tableDeleteHandler object_id="+object_id);//((18<< 16) + 1)=1179649 | 342 | // console.log("白板收到数据,tableDeleteHandler object_id="+object_id);//((18<< 16) + 1)=1179649 |
| @@ -341,8 +346,10 @@ class WhiteBoardApe extends Ape { | @@ -341,8 +346,10 @@ class WhiteBoardApe extends Ape { | ||
| 341 | let itemIdxs=tableDeleteData.itemIdx; | 346 | let itemIdxs=tableDeleteData.itemIdx; |
| 342 | for (let i=0;i<len;i++){ | 347 | for (let i=0;i<len;i++){ |
| 343 | if(this.annoInfos[itemIdxs[i]]){ | 348 | if(this.annoInfos[itemIdxs[i]]){ |
| 349 | + loger.log("删除白板数据:",itemIdxs[i],"当前剩余的白板数据"); | ||
| 350 | + console.log(this.annoInfos); this._emit(MessageTypes.WHITEBOARD_ANNOTAION_DELETE,{ "itemIdx":itemIdxs[i]}); | ||
| 351 | + this._emit(MessageTypes.WHITEBOARD_ANNOTAION_DELETE,{ "itemIdx":itemIdxs[i]}); | ||
| 344 | delete this.annoInfos[itemIdxs[i]]; | 352 | delete this.annoInfos[itemIdxs[i]]; |
| 345 | - loger.log("删除白板数据:",itemIdxs[i],"当前剩余的白板数据",this.annoInfos); | ||
| 346 | } | 353 | } |
| 347 | } | 354 | } |
| 348 | } | 355 | } |
| @@ -12,6 +12,7 @@ import ConferApe from 'apes/ConferApe'; | @@ -12,6 +12,7 @@ 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 | +import EngineUtils from 'EngineUtils'; | ||
| 15 | 16 | ||
| 16 | let loger = Loger.getLoger('MCU'); | 17 | let loger = Loger.getLoger('MCU'); |
| 17 | 18 | ||
| @@ -161,7 +162,7 @@ class MCU extends Emiter { | @@ -161,7 +162,7 @@ class MCU extends Emiter { | ||
| 161 | _confInfo.confId = parseInt(_confInfo.confId); // confId 必须整形 | 162 | _confInfo.confId = parseInt(_confInfo.confId); // confId 必须整形 |
| 162 | this.confInfo = _confInfo; | 163 | this.confInfo = _confInfo; |
| 163 | // 创建刷新nodeId | 164 | // 创建刷新nodeId |
| 164 | - this.confInfo.nodeId = parseInt(Date.now() / 1000); | 165 | + this.confInfo.nodeId =EngineUtils.generateNodeID(); |
| 165 | GlobalConfig.nodeId=this.confInfo.nodeId;//这是标识自己身份的id | 166 | GlobalConfig.nodeId=this.confInfo.nodeId;//这是标识自己身份的id |
| 166 | 167 | ||
| 167 | let nodeInfoRecordPdu = new pdu['RCNodeInfoRecordPdu']; | 168 | let nodeInfoRecordPdu = new pdu['RCNodeInfoRecordPdu']; |
| @@ -701,19 +701,35 @@ message RCChatSendDataRequestPdu { | @@ -701,19 +701,35 @@ message RCChatSendDataRequestPdu { | ||
| 701 | } | 701 | } |
| 702 | 702 | ||
| 703 | message RCDocSendDataRequestPdu { | 703 | message RCDocSendDataRequestPdu { |
| 704 | - required int32 id = 1; | 704 | + required uint32 id = 1; |
| 705 | required string doc_type = 2; | 705 | required string doc_type = 2; |
| 706 | required string uri = 3; | 706 | required string uri = 3; |
| 707 | - optional int32 owner = 4; | ||
| 708 | - optional int32 from = 5; | 707 | + optional uint32 owner = 4; |
| 708 | + optional uint32 from = 5; | ||
| 709 | optional string name = 6; | 709 | optional string name = 6; |
| 710 | - optional int32 cur_page_no = 7; | ||
| 711 | - optional int32 cur_H = 8; | ||
| 712 | - optional int32 cur_V = 9; | ||
| 713 | - optional int32 scale = 10; | ||
| 714 | - optional int32 page_num = 11; | 710 | + optional uint32 cur_page_no = 7; |
| 711 | + optional uint32 cur_H = 8; | ||
| 712 | + optional uint32 cur_V = 9; | ||
| 713 | + optional uint32 scale = 10; | ||
| 714 | + optional uint32 page_num = 11; | ||
| 715 | +} | ||
| 716 | +message RCDocSendDataModel { | ||
| 717 | + required uint32 item_idx=1;//唯一标识 | ||
| 718 | + required uint32 owner=2; | ||
| 719 | + optional uint32 from=3; | ||
| 720 | + optional uint32 cur_page_no=4; | ||
| 721 | + optional uint32 page_num =5; | ||
| 722 | + required string file_type=6; | ||
| 723 | + required string doc_type=7; | ||
| 724 | + required string relative_url=8;//文档相对地址 | ||
| 725 | + optional string url =9;//文档地址 | ||
| 726 | + optional uint32 cur_V=10; | ||
| 727 | + optional uint32 cur_H=11; | ||
| 728 | + optional uint32 scale=12; | ||
| 729 | + optional bool visible=13; | ||
| 730 | + optional uint32 action=14;//0,无操作, 1翻页、2.显示/隐藏 | ||
| 731 | + optional string id=15;//文档在服务器数据库中的唯一id | ||
| 715 | } | 732 | } |
| 716 | - | ||
| 717 | message RCGiftSendDataRequestPdu { | 733 | message RCGiftSendDataRequestPdu { |
| 718 | optional uint32 initiator = 1; | 734 | optional uint32 initiator = 1; |
| 719 | required uint32 peer = 2; | 735 | required uint32 peer = 2; |
| @@ -834,7 +850,7 @@ message RCWhiteBoardDataModel { | @@ -834,7 +850,7 @@ message RCWhiteBoardDataModel { | ||
| 834 | required uint32 itemIdx= 2;//itemIdx 每一次绘制的唯一标识 | 850 | required uint32 itemIdx= 2;//itemIdx 每一次绘制的唯一标识 |
| 835 | required uint32 initiator=3; //绘制来自谁 | 851 | required uint32 initiator=3; //绘制来自谁 |
| 836 | required uint32 parentId=4; //父级的id | 852 | required uint32 parentId=4; //父级的id |
| 837 | - required uint32 pageNum= 5;//页码 | 853 | + required uint32 curPage= 5;//页码 |
| 838 | optional string pointGroup=6; //坐标点集数组的JSON字符串 | 854 | optional string pointGroup=6; //坐标点集数组的JSON字符串 |
| 839 | optional string color=7 [default = "#000000"]; //颜色 | 855 | optional string color=7 [default = "#000000"]; //颜色 |
| 840 | optional uint32 thickness= 8 ;//线条粗细 | 856 | optional uint32 thickness= 8 ;//线条粗细 |
-
请 注册 或 登录 后发表评论