正在显示
5 个修改的文件
包含
188 行增加
和
135 行删除
此 diff 太大无法显示。
| @@ -27,7 +27,7 @@ import Server from "config/Server"; | @@ -27,7 +27,7 @@ import Server from "config/Server"; | ||
| 27 | import UTF8 from 'utf-8'; | 27 | import UTF8 from 'utf-8'; |
| 28 | 28 | ||
| 29 | let loger = Loger.getLoger('McuClient'); | 29 | let loger = Loger.getLoger('McuClient'); |
| 30 | -let _sdkInfo = {"version": "v1.9.11.20170419", "author": "www.3mang.com"}; | 30 | +let _sdkInfo = {"version": "v1.9.12.20170419", "author": "www.3mang.com"}; |
| 31 | 31 | ||
| 32 | //APE | 32 | //APE |
| 33 | let _sass; | 33 | let _sass; |
| @@ -78,6 +78,7 @@ export default class MessageEntrance extends Emiter { | @@ -78,6 +78,7 @@ export default class MessageEntrance extends Emiter { | ||
| 78 | _mcu = Mcu; | 78 | _mcu = Mcu; |
| 79 | _mcu.on('*', (type, data) => this._emit(type, data)); | 79 | _mcu.on('*', (type, data) => this._emit(type, data)); |
| 80 | _mcu.on(MessageTypes.CLASS_JOIN_MCU_SUCCESS, this._mcuJoinMCUClassSuccessHandler.bind(this));//加入MCU课堂完成 | 80 | _mcu.on(MessageTypes.CLASS_JOIN_MCU_SUCCESS, this._mcuJoinMCUClassSuccessHandler.bind(this));//加入MCU课堂完成 |
| 81 | + _mcu.on(MessageTypes.CHANGE_MCU_IP, this._changeMcuIpHandler.bind(this));//切换MCU,重新选点 | ||
| 81 | 82 | ||
| 82 | //录制回放 | 83 | //录制回放 |
| 83 | _recordPlayback = RecordPlayBackParse; | 84 | _recordPlayback = RecordPlayBackParse; |
| @@ -198,8 +199,8 @@ export default class MessageEntrance extends Emiter { | @@ -198,8 +199,8 @@ export default class MessageEntrance extends Emiter { | ||
| 198 | _mcuErrorHandler(_data, _option) { | 199 | _mcuErrorHandler(_data, _option) { |
| 199 | let option = _option || ""; | 200 | let option = _option || ""; |
| 200 | let errorMessage = {"code": _data, "reson": MessageTypes.ErrorReson[_data] + " " + option}; | 201 | let errorMessage = {"code": _data, "reson": MessageTypes.ErrorReson[_data] + " " + option}; |
| 201 | - loger.error("MCU_ERROR", errorMessage); | ||
| 202 | this._emit(MessageTypes.ERROR_EVENT, errorMessage); | 202 | this._emit(MessageTypes.ERROR_EVENT, errorMessage); |
| 203 | + loger.error("MCU_ERROR", errorMessage); | ||
| 203 | } | 204 | } |
| 204 | 205 | ||
| 205 | //获取当前的状态 | 206 | //获取当前的状态 |
| @@ -734,6 +735,31 @@ export default class MessageEntrance extends Emiter { | @@ -734,6 +735,31 @@ export default class MessageEntrance extends Emiter { | ||
| 734 | this._emit(MessageTypes.CLASS_JOIN_SUCCESS, joinClassSuccessCallBackData); | 735 | this._emit(MessageTypes.CLASS_JOIN_SUCCESS, joinClassSuccessCallBackData); |
| 735 | } | 736 | } |
| 736 | 737 | ||
| 738 | + //切换MCU | ||
| 739 | + _changeMcuIpHandler(){ | ||
| 740 | + if(GlobalConfig.isRecordPlayBack){ | ||
| 741 | + //录制回放不做操作 | ||
| 742 | + return; | ||
| 743 | + } | ||
| 744 | + loger.log('MCU->动态选点'); | ||
| 745 | + let _this=this; | ||
| 746 | + this._getFastestMcuServer(function (_data) { | ||
| 747 | + loger.log("MCU选点结束->", _data); | ||
| 748 | + if (_data && _data.ip) { | ||
| 749 | + GlobalConfig.MCUServerIP = _data.ip; | ||
| 750 | + GlobalConfig.MCUServerPort = _data.port; | ||
| 751 | + }else { | ||
| 752 | + //随机选择一个 | ||
| 753 | + if (GlobalConfig.mcuList &&GlobalConfig.mcuList.length > 0) { | ||
| 754 | + let index = parseInt(Math.random() * GlobalConfig.mcuList.length); | ||
| 755 | + GlobalConfig.DOCServerIP = GlobalConfig.mcuList[index].ip || ""; | ||
| 756 | + GlobalConfig.DOCServerPort = GlobalConfig.mcuList[index].port || ""; | ||
| 757 | + } | ||
| 758 | + } | ||
| 759 | + loger.log('MCU->切换->', GlobalConfig.DOCServerIP, GlobalConfig.DOCServerPort ); | ||
| 760 | + }); | ||
| 761 | + } | ||
| 762 | + | ||
| 737 | //Sass删除文档数据 | 763 | //Sass删除文档数据 |
| 738 | _sassDeleteDocument(_param) { | 764 | _sassDeleteDocument(_param) { |
| 739 | if (!_mcu.connected) { | 765 | if (!_mcu.connected) { |
| @@ -15,153 +15,164 @@ | @@ -15,153 +15,164 @@ | ||
| 15 | import Emiter from 'Emiter'; | 15 | import Emiter from 'Emiter'; |
| 16 | import Loger from 'Loger'; | 16 | import Loger from 'Loger'; |
| 17 | let loger = Loger.getLoger('EverSocket'); | 17 | let loger = Loger.getLoger('EverSocket'); |
| 18 | - | 18 | +const MCU_MAX_RECONNECTION = 5;//最多重连次数 |
| 19 | class EverSocket extends Emiter { | 19 | class EverSocket extends Emiter { |
| 20 | - constructor() { | ||
| 21 | - super(); | ||
| 22 | - this._connected = false; | ||
| 23 | - this._lastActiveTime = 0;//最后一次收到消息的时间 | ||
| 24 | - this._enableEverSocket = false; | ||
| 25 | - } | ||
| 26 | - | ||
| 27 | - begin(ip, port) { | ||
| 28 | - loger.log('开始WebSocket应用.'); | ||
| 29 | - this._enableEverSocket = true; | ||
| 30 | - this.wsURL = 'ws://' + ip + ':' + port; | ||
| 31 | - this._newConnection(); | ||
| 32 | - } | ||
| 33 | - | ||
| 34 | - end() { | ||
| 35 | - loger.log('停止WebSocket应用.'); | ||
| 36 | - this._clear(); | ||
| 37 | - } | ||
| 38 | - | ||
| 39 | - get connected() { | ||
| 40 | - return this._connected; | ||
| 41 | - } | ||
| 42 | - | ||
| 43 | - send(data) { | ||
| 44 | - if (this._connected) { | ||
| 45 | - if(data){ | ||
| 46 | - loger.log('SEND MESSAGE,byteLength---->',data.byteLength); | ||
| 47 | - }else { | ||
| 48 | - loger.log('SEND MESSAGE---->'); | ||
| 49 | - } | ||
| 50 | - this.websocket.send(data); | ||
| 51 | - } else { | ||
| 52 | - loger.warn('WebSocket未建立连接.消息忽略'); | 20 | + constructor() { |
| 21 | + super(); | ||
| 22 | + this._connected = false; | ||
| 23 | + this._lastActiveTime = 0;//最后一次收到消息的时间 | ||
| 24 | + this._enableEverSocket = false; | ||
| 25 | + this.reConnectionCounter = 0;//重连次数 | ||
| 26 | + | ||
| 27 | + } | ||
| 28 | + | ||
| 29 | + begin(ip, port) { | ||
| 30 | + loger.log('开始WebSocket应用.'); | ||
| 31 | + this._enableEverSocket = true; | ||
| 32 | + this.wsURL = 'ws://' + ip + ':' + port; | ||
| 33 | + this._newConnection(); | ||
| 34 | + } | ||
| 35 | + | ||
| 36 | + end() { | ||
| 37 | + loger.log('停止WebSocket应用.'); | ||
| 38 | + this._clear(); | ||
| 53 | } | 39 | } |
| 54 | - } | ||
| 55 | - | ||
| 56 | - _setConnected(isConn = true) { | ||
| 57 | - this._connected = isConn; | ||
| 58 | - if (this._connected) { | ||
| 59 | - this._emit(EverSocket.OPEN); | ||
| 60 | - } else { | ||
| 61 | - this._emit(EverSocket.CLOSED); | 40 | + |
| 41 | + get connected() { | ||
| 42 | + return this._connected; | ||
| 43 | + } | ||
| 44 | + | ||
| 45 | + send(data) { | ||
| 46 | + if (this._connected) { | ||
| 47 | + if (data) { | ||
| 48 | + loger.log('SEND MESSAGE,byteLength---->', data.byteLength); | ||
| 49 | + } else { | ||
| 50 | + loger.log('SEND MESSAGE---->'); | ||
| 51 | + } | ||
| 52 | + this.websocket.send(data); | ||
| 53 | + } else { | ||
| 54 | + loger.warn('WebSocket未建立连接.消息忽略'); | ||
| 55 | + } | ||
| 56 | + } | ||
| 57 | + | ||
| 58 | + _setConnected(isConn = true) { | ||
| 59 | + this._connected = isConn; | ||
| 60 | + if (this._connected) { | ||
| 61 | + this._emit(EverSocket.OPEN); | ||
| 62 | + } else { | ||
| 63 | + this._emit(EverSocket.CLOSED); | ||
| 64 | + } | ||
| 62 | } | 65 | } |
| 63 | - } | ||
| 64 | - | ||
| 65 | - _newConnection() { | ||
| 66 | - this.websocket = new WebSocket(this.wsURL); | ||
| 67 | - this.websocket.binaryType = 'arraybuffer'; | ||
| 68 | - this.websocket.onopen = this._onOpen.bind(this); | ||
| 69 | - this.websocket.onclose = this._onClose.bind(this); | ||
| 70 | - this.websocket.onerror = this._onError.bind(this); | ||
| 71 | - this.websocket.onmessage = this._onMessage.bind(this); | ||
| 72 | - } | ||
| 73 | - | ||
| 74 | - _reConnection() { | ||
| 75 | - this._clear(); | ||
| 76 | - this.reConnectionTimeout = window.setTimeout(() => { | ||
| 77 | - loger.log('WebSocket重新建立.'); | ||
| 78 | - window.clearTimeout(this.reConnectionTimeout); | ||
| 79 | - this._newConnection(); | ||
| 80 | - }, EverSocket.RECONN_INTERVAL); | ||
| 81 | - } | ||
| 82 | - | ||
| 83 | - _clear() { | ||
| 84 | - //this._emit(EverSocket.CLOSED); | ||
| 85 | - loger.log('WebSocket,Timers销毁'); | ||
| 86 | - window.clearInterval(this.pingTimer); | ||
| 87 | - window.clearInterval(this.pongTimer); | ||
| 88 | - window.clearInterval(this.reConnectionTimeout); | ||
| 89 | - this._setConnected(false);//先设置状态 | ||
| 90 | - this._enableEverSocket = false; | ||
| 91 | - if(this.websocket==null){ | ||
| 92 | - loger.log('WebSocket,Timers已经销毁'); | ||
| 93 | - return; | 66 | + |
| 67 | + _newConnection() { | ||
| 68 | + this.websocket = new WebSocket(this.wsURL); | ||
| 69 | + this.websocket.binaryType = 'arraybuffer'; | ||
| 70 | + this.websocket.onopen = this._onOpen.bind(this); | ||
| 71 | + this.websocket.onclose = this._onClose.bind(this); | ||
| 72 | + this.websocket.onerror = this._onError.bind(this); | ||
| 73 | + this.websocket.onmessage = this._onMessage.bind(this); | ||
| 94 | } | 74 | } |
| 95 | - this.websocket.onopen = undefined; | ||
| 96 | - this.websocket.onclose = undefined; | ||
| 97 | - this.websocket.onerror = undefined; | ||
| 98 | - this.websocket.onmessage = undefined; | ||
| 99 | - try { | ||
| 100 | - this.websocket.close(); | ||
| 101 | - } catch (e) { | ||
| 102 | - loger.log('ignore errors'); | 75 | + |
| 76 | + _reConnection() { | ||
| 77 | + this._clear(); | ||
| 78 | + window.clearTimeout(this.reConnectionTimeout); | ||
| 79 | + this.reConnectionCounter++; | ||
| 80 | + if (this.reConnectionCounter > MCU_MAX_RECONNECTION) { | ||
| 81 | + loger.warn('已经达到最大重连次数!'); | ||
| 82 | + this._emit(EverSocket.ERROR, EverSocket.ERR_SOCKET_RECONNECT_FAILED); | ||
| 83 | + this.reConnectionCounter=0; | ||
| 84 | + } | ||
| 85 | + | ||
| 86 | + this.reConnectionTimeout = window.setTimeout(() => { | ||
| 87 | + loger.log('WebSocket重新建立.'); | ||
| 88 | + window.clearTimeout(this.reConnectionTimeout); | ||
| 89 | + this._newConnection(); | ||
| 90 | + }, EverSocket.RECONN_INTERVAL); | ||
| 103 | } | 91 | } |
| 104 | - this.websocket = undefined; | ||
| 105 | 92 | ||
| 106 | - } | 93 | + _clear() { |
| 94 | + //this._emit(EverSocket.CLOSED); | ||
| 95 | + loger.log('WebSocket,Timers销毁'); | ||
| 96 | + window.clearInterval(this.pingTimer); | ||
| 97 | + window.clearInterval(this.pongTimer); | ||
| 98 | + window.clearInterval(this.reConnectionTimeout); | ||
| 99 | + this._setConnected(false);//先设置状态 | ||
| 100 | + this._enableEverSocket = false; | ||
| 101 | + if (this.websocket == null) { | ||
| 102 | + loger.log('WebSocket,Timers已经销毁'); | ||
| 103 | + return; | ||
| 104 | + } | ||
| 105 | + this.websocket.onopen = undefined; | ||
| 106 | + this.websocket.onclose = undefined; | ||
| 107 | + this.websocket.onerror = undefined; | ||
| 108 | + this.websocket.onmessage = undefined; | ||
| 109 | + try { | ||
| 110 | + this.websocket.close(); | ||
| 111 | + } catch (e) { | ||
| 112 | + loger.log('ignore errors'); | ||
| 113 | + } | ||
| 114 | + this.websocket = undefined; | ||
| 107 | 115 | ||
| 108 | - _onOpen() { | ||
| 109 | - loger.log('WebSocket建立成功', this.wsURL); | 116 | + } |
| 110 | 117 | ||
| 111 | - //启动心跳,检查socket链接状态 | ||
| 112 | - this.pingTimer = window.setInterval(this._sendPingHandler.bind(this), EverSocket.PING_INTERVAL); | ||
| 113 | - this.pongTimer = window.setInterval(this._checkPongHandler.bind(this), EverSocket.PONG_INTERVAL); | 118 | + _onOpen() { |
| 119 | + loger.log('WebSocket建立成功', this.wsURL); | ||
| 120 | + this.reConnectionCounter = 0; | ||
| 114 | 121 | ||
| 115 | - this._setConnected(); | ||
| 116 | - } | 122 | + //启动心跳,检查socket链接状态 |
| 123 | + this.pingTimer = window.setInterval(this._sendPingHandler.bind(this), EverSocket.PING_INTERVAL); | ||
| 124 | + this.pongTimer = window.setInterval(this._checkPongHandler.bind(this), EverSocket.PONG_INTERVAL); | ||
| 117 | 125 | ||
| 118 | - _onClose(closeEvent) { | ||
| 119 | - loger.log(`WebSocket连接断开 CODE:${closeEvent.code} REASON:${closeEvent.reason} CLEAN: ${closeEvent.wasClean}`, this.wsURL); | ||
| 120 | - this._reConnection(); | ||
| 121 | - } | 126 | + this._setConnected(); |
| 127 | + } | ||
| 122 | 128 | ||
| 123 | - _onError() { | ||
| 124 | - loger.log('WebSocket错误出现'); | ||
| 125 | - this._connected = false; | ||
| 126 | - this._reConnection(); | ||
| 127 | - } | 129 | + _onClose(closeEvent) { |
| 130 | + loger.log(`WebSocket连接断开 CODE:${closeEvent.code} REASON:${closeEvent.reason} CLEAN: ${closeEvent.wasClean}`, this.wsURL); | ||
| 131 | + this._reConnection(); | ||
| 132 | + } | ||
| 128 | 133 | ||
| 129 | - _onMessage(messageEvent) { | ||
| 130 | - loger.log('<----RECEIVE MESSAGE'); | ||
| 131 | - this._lastActiveTime = Date.now(); | ||
| 132 | - const bufferData = messageEvent.data; | ||
| 133 | - if (bufferData.byteLength > 0) { | ||
| 134 | - this._emit(EverSocket.MESSAGE, bufferData); | 134 | + _onError() { |
| 135 | + loger.log('WebSocket错误出现'); | ||
| 136 | + this._connected = false; | ||
| 137 | + this._reConnection(); | ||
| 135 | } | 138 | } |
| 136 | - } | ||
| 137 | 139 | ||
| 138 | - _sendPingHandler() { | ||
| 139 | - if (this._connected) { | ||
| 140 | - this.websocket.send(new ArrayBuffer); | ||
| 141 | - } else { | ||
| 142 | - this._reConnection(); | 140 | + _onMessage(messageEvent) { |
| 141 | + loger.log('<----RECEIVE MESSAGE'); | ||
| 142 | + this._lastActiveTime = Date.now(); | ||
| 143 | + const bufferData = messageEvent.data; | ||
| 144 | + if (bufferData.byteLength > 0) { | ||
| 145 | + this._emit(EverSocket.MESSAGE, bufferData); | ||
| 146 | + } | ||
| 143 | } | 147 | } |
| 144 | - } | ||
| 145 | - | ||
| 146 | - _checkPongHandler() { | ||
| 147 | - let pongTime = Date.now(); | ||
| 148 | - if (this._lastActiveTime && | ||
| 149 | - this._lastActiveTime >= pongTime - EverSocket.PONG_INTERVAL && | ||
| 150 | - this._lastActiveTime <= pongTime | ||
| 151 | - ) { | ||
| 152 | - | ||
| 153 | - } else { | ||
| 154 | - loger.warn('---服务器PINGPONG超时-----'); | ||
| 155 | - this._reConnection(); | 148 | + |
| 149 | + _sendPingHandler() { | ||
| 150 | + if (this._connected) { | ||
| 151 | + this.websocket.send(new ArrayBuffer); | ||
| 152 | + } else { | ||
| 153 | + this._reConnection(); | ||
| 154 | + } | ||
| 155 | + } | ||
| 156 | + | ||
| 157 | + _checkPongHandler() { | ||
| 158 | + let pongTime = Date.now(); | ||
| 159 | + if (this._lastActiveTime && | ||
| 160 | + this._lastActiveTime >= pongTime - EverSocket.PONG_INTERVAL && | ||
| 161 | + this._lastActiveTime <= pongTime | ||
| 162 | + ) { | ||
| 163 | + | ||
| 164 | + } else { | ||
| 165 | + loger.warn('---服务器PINGPONG超时-----'); | ||
| 166 | + this._reConnection(); | ||
| 167 | + } | ||
| 156 | } | 168 | } |
| 157 | - } | ||
| 158 | } | 169 | } |
| 159 | 170 | ||
| 160 | 171 | ||
| 161 | /*//修改之前的 | 172 | /*//修改之前的 |
| 162 | -EverSocket.prototype.PONG_INTERVAL = EverSocket.PONG_INTERVAL = 5000; | ||
| 163 | -EverSocket.prototype.PING_INTERVAL = EverSocket.PING_INTERVAL = 3000; | ||
| 164 | -EverSocket.prototype.RECONN_INTERVAL = EverSocket.RECONN_INTERVAL = 2000;*/ | 173 | + EverSocket.prototype.PONG_INTERVAL = EverSocket.PONG_INTERVAL = 5000; |
| 174 | + EverSocket.prototype.PING_INTERVAL = EverSocket.PING_INTERVAL = 3000; | ||
| 175 | + EverSocket.prototype.RECONN_INTERVAL = EverSocket.RECONN_INTERVAL = 2000;*/ | ||
| 165 | 176 | ||
| 166 | 177 | ||
| 167 | //20170223-mcu服务端修改了心跳的逻辑,如果客户端30秒没有请求,就会按离开的处理 | 178 | //20170223-mcu服务端修改了心跳的逻辑,如果客户端30秒没有请求,就会按离开的处理 |
| @@ -170,11 +181,14 @@ EverSocket.prototype.PONG_INTERVAL = EverSocket.PONG_INTERVAL = 21000;// | @@ -170,11 +181,14 @@ EverSocket.prototype.PONG_INTERVAL = EverSocket.PONG_INTERVAL = 21000;// | ||
| 170 | EverSocket.prototype.PING_INTERVAL = EverSocket.PING_INTERVAL = 10000;//心跳间隔 | 181 | EverSocket.prototype.PING_INTERVAL = EverSocket.PING_INTERVAL = 10000;//心跳间隔 |
| 171 | EverSocket.prototype.RECONN_INTERVAL = EverSocket.RECONN_INTERVAL = 3000;//重连的间隔 | 182 | EverSocket.prototype.RECONN_INTERVAL = EverSocket.RECONN_INTERVAL = 3000;//重连的间隔 |
| 172 | 183 | ||
| 184 | + | ||
| 185 | +EverSocket.prototype.ERR_SOCKET_RECONNECT_FAILED =EverSocket.ERR_SOCKET_RECONNECT_FAILED=20001;//MCU自动重连失败,已经达到最大重连次数 | ||
| 186 | + | ||
| 173 | EverSocket.prototype.CONNECTING = EverSocket.CONNECTING = 0; | 187 | EverSocket.prototype.CONNECTING = EverSocket.CONNECTING = 0; |
| 174 | EverSocket.prototype.OPEN = EverSocket.OPEN = 1; | 188 | EverSocket.prototype.OPEN = EverSocket.OPEN = 1; |
| 175 | EverSocket.prototype.CLOSING = EverSocket.CLOSING = 2; | 189 | EverSocket.prototype.CLOSING = EverSocket.CLOSING = 2; |
| 176 | EverSocket.prototype.CLOSED = EverSocket.CLOSED = 3; | 190 | EverSocket.prototype.CLOSED = EverSocket.CLOSED = 3; |
| 177 | EverSocket.prototype.MESSAGE = EverSocket.MESSAGE = 4; | 191 | EverSocket.prototype.MESSAGE = EverSocket.MESSAGE = 4; |
| 178 | - | 192 | +EverSocket.prototype.ERROR = EverSocket.ERROR = 5; |
| 179 | export default new EverSocket(); | 193 | export default new EverSocket(); |
| 180 | 194 |
| @@ -42,8 +42,6 @@ MessageTypes.VIDEO_BROADCAST= "video_broadcast";//'视频控制广播消息; | @@ -42,8 +42,6 @@ MessageTypes.VIDEO_BROADCAST= "video_broadcast";//'视频控制广播消息; | ||
| 42 | MessageTypes.VIDEO_GET_PUBLISH_PATH= "video_get_publish_path";//获取视频推流地址 | 42 | MessageTypes.VIDEO_GET_PUBLISH_PATH= "video_get_publish_path";//获取视频推流地址 |
| 43 | MessageTypes.VIDEO_PUBLISH_RESULT= "video_publish_result";//获取视频推流结果 | 43 | MessageTypes.VIDEO_PUBLISH_RESULT= "video_publish_result";//获取视频推流结果 |
| 44 | 44 | ||
| 45 | - | ||
| 46 | - | ||
| 47 | //音频模块事件定义 | 45 | //音频模块事件定义 |
| 48 | MessageTypes.AUDIO_PLAY ="audio_play";// 'audio.play';//播放 | 46 | MessageTypes.AUDIO_PLAY ="audio_play";// 'audio.play';//播放 |
| 49 | MessageTypes.AUDIO_STOP = "audio_stop";//'audio.stop';//停止 | 47 | MessageTypes.AUDIO_STOP = "audio_stop";//'audio.stop';//停止 |
| @@ -52,6 +50,9 @@ MessageTypes.AUDIO_BROADCAST= "audio_broadcast";//'audio.broadcast'; | @@ -52,6 +50,9 @@ MessageTypes.AUDIO_BROADCAST= "audio_broadcast";//'audio.broadcast'; | ||
| 52 | MessageTypes.AUDIO_GET_PUBLISH_PATH= "audio_get_publish_path";//获取音频推流地址 | 50 | MessageTypes.AUDIO_GET_PUBLISH_PATH= "audio_get_publish_path";//获取音频推流地址 |
| 53 | MessageTypes.AUDIO_PUBLISH_RESULT= "audio_publish_result";//获取音频推流结果 | 51 | MessageTypes.AUDIO_PUBLISH_RESULT= "audio_publish_result";//获取音频推流结果 |
| 54 | 52 | ||
| 53 | +MessageTypes.CHANGE_MS_IP ="change_ms_ip";//切换ms 重新选点 | ||
| 54 | + | ||
| 55 | + | ||
| 55 | //文档模块事件定义 | 56 | //文档模块事件定义 |
| 56 | MessageTypes.DOC_DELETE="document_delete";//'document.delete';//删除文档 | 57 | MessageTypes.DOC_DELETE="document_delete";//'document.delete';//删除文档 |
| 57 | MessageTypes.DOC_UPDATE ="document_update";// 'document.update';//更新文档(添加、变更) | 58 | MessageTypes.DOC_UPDATE ="document_update";// 'document.update';//更新文档(添加、变更) |
| @@ -71,6 +72,10 @@ MessageTypes.WHITEBOARD_ANNOTATION_UPDATE ="whiteboard_annotation_update";// 'wh | @@ -71,6 +72,10 @@ MessageTypes.WHITEBOARD_ANNOTATION_UPDATE ="whiteboard_annotation_update";// 'wh | ||
| 71 | //MessageTypes.WHITEBOARD_ANNOTATION_CLEAR = 'whiteboard.annotation.clear'; | 72 | //MessageTypes.WHITEBOARD_ANNOTATION_CLEAR = 'whiteboard.annotation.clear'; |
| 72 | 73 | ||
| 73 | 74 | ||
| 75 | +//MCU | ||
| 76 | +MessageTypes.CHANGE_MCU_IP ="change_mcu_ip";//切换mcu 重新选点 | ||
| 77 | + | ||
| 78 | + | ||
| 74 | //录制回放 | 79 | //录制回放 |
| 75 | MessageTypes.RECORD_PLAYBACK_UPDATE ="record_playback_update";//录制回放更新信息 | 80 | MessageTypes.RECORD_PLAYBACK_UPDATE ="record_playback_update";//录制回放更新信息 |
| 76 | 81 | ||
| @@ -127,6 +132,7 @@ MessageTypes.ERR_NETWORK=10000;//网络错误 | @@ -127,6 +132,7 @@ MessageTypes.ERR_NETWORK=10000;//网络错误 | ||
| 127 | MessageTypes.ERR_UNKNOWN=10001;//未知错误 | 132 | MessageTypes.ERR_UNKNOWN=10001;//未知错误 |
| 128 | 133 | ||
| 129 | MessageTypes.ERR_SOCKET_DISCONNECT=20000;//MCU断开连接,已经离开课堂 | 134 | MessageTypes.ERR_SOCKET_DISCONNECT=20000;//MCU断开连接,已经离开课堂 |
| 135 | +MessageTypes.ERR_SOCKET_RECONNECT_FAILED=20001;//MCU自动重连失败,已经达到最大重连次数 | ||
| 130 | 136 | ||
| 131 | //---------------错误消息 Error Reson 定义------------------------------------------------- | 137 | //---------------错误消息 Error Reson 定义------------------------------------------------- |
| 132 | MessageTypes.ErrorReson={}; | 138 | MessageTypes.ErrorReson={}; |
| @@ -178,8 +184,7 @@ MessageTypes.ErrorReson[MessageTypes.ERR_NETWORK]="网络错误"; | @@ -178,8 +184,7 @@ MessageTypes.ErrorReson[MessageTypes.ERR_NETWORK]="网络错误"; | ||
| 178 | MessageTypes.ErrorReson[MessageTypes.ERR_UNKNOWN]="未知错误"; | 184 | MessageTypes.ErrorReson[MessageTypes.ERR_UNKNOWN]="未知错误"; |
| 179 | 185 | ||
| 180 | MessageTypes.ErrorReson[MessageTypes.ERR_SOCKET_DISCONNECT]="MCU断开连接,已经离开课堂"; | 186 | MessageTypes.ErrorReson[MessageTypes.ERR_SOCKET_DISCONNECT]="MCU断开连接,已经离开课堂"; |
| 181 | - | ||
| 182 | - | 187 | +MessageTypes.ErrorReson[MessageTypes.ERR_SOCKET_RECONNECT_FAILED]="MCU自动重连失败,已经达到最大重连次数"; |
| 183 | 188 | ||
| 184 | export default MessageTypes; | 189 | export default MessageTypes; |
| 185 | 190 |
| @@ -24,6 +24,7 @@ class MCU extends Emiter { | @@ -24,6 +24,7 @@ class MCU extends Emiter { | ||
| 24 | this._everSocket.on(everSocket.OPEN, this._everSocketOpenHandler.bind(this)); | 24 | this._everSocket.on(everSocket.OPEN, this._everSocketOpenHandler.bind(this)); |
| 25 | this._everSocket.on(everSocket.MESSAGE, this._everSocketMsgReceivedHandler.bind(this)); | 25 | this._everSocket.on(everSocket.MESSAGE, this._everSocketMsgReceivedHandler.bind(this)); |
| 26 | this._everSocket.on(everSocket.CLOSED, this._everSocketCloseHandler.bind(this)); | 26 | this._everSocket.on(everSocket.CLOSED, this._everSocketCloseHandler.bind(this)); |
| 27 | + this._everSocket.on(everSocket.ERROR,this._everSocketErrorHandler.bind(this)); | ||
| 27 | } | 28 | } |
| 28 | 29 | ||
| 29 | // 注册Ape | 30 | // 注册Ape |
| @@ -41,7 +42,14 @@ class MCU extends Emiter { | @@ -41,7 +42,14 @@ class MCU extends Emiter { | ||
| 41 | GlobalConfig.setCurrentStatus(GlobalConfig.statusCode_3); | 42 | GlobalConfig.setCurrentStatus(GlobalConfig.statusCode_3); |
| 42 | this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_SOCKET_DISCONNECT); | 43 | this._emit(MessageTypes.MCU_ERROR, MessageTypes.ERR_SOCKET_DISCONNECT); |
| 43 | } | 44 | } |
| 44 | - | 45 | + //EverSocket错误异常 |
| 46 | + _everSocketErrorHandler(_errorCode){ | ||
| 47 | + this._emit(MessageTypes.MCU_ERROR,_errorCode); | ||
| 48 | + //如果自动重连次数已经达到最大值,重新选点 | ||
| 49 | + if(_errorCode==everSocket.ERR_SOCKET_RECONNECT_FAILED){ | ||
| 50 | + this._emit(MessageTypes.CHANGE_MCU_IP); | ||
| 51 | + } | ||
| 52 | + } | ||
| 45 | 53 | ||
| 46 | //MCU-发送加入课堂请求 | 54 | //MCU-发送加入课堂请求 |
| 47 | _sendJoinClassRequest() { | 55 | _sendJoinClassRequest() { |
-
请 注册 或 登录 后发表评论