修复视频模块和音频模块,释放nodeId对应的频道信息时 信息不一致的问题,课堂中正在推流的人员掉线之后,课堂内释放占用的频道时,信息应该按使用者的信息来释放
正在显示
5 个修改的文件
包含
22 行增加
和
11 行删除
此 diff 太大无法显示。
| @@ -32,7 +32,7 @@ import QuestionApe from 'apes/QuestionApe'; | @@ -32,7 +32,7 @@ import QuestionApe from 'apes/QuestionApe'; | ||
| 32 | import UTF8 from 'utf-8'; | 32 | import UTF8 from 'utf-8'; |
| 33 | 33 | ||
| 34 | let loger = Loger.getLoger('McuClient'); | 34 | let loger = Loger.getLoger('McuClient'); |
| 35 | -let _sdkInfo = {"version": "v1.35.4.20170619", "author": "www.3mang.com"}; | 35 | +let _sdkInfo = {"version": "v1.36.1.20170619", "author": "www.3mang.com"}; |
| 36 | 36 | ||
| 37 | //APE | 37 | //APE |
| 38 | let _sass; | 38 | let _sass; |
| @@ -381,6 +381,7 @@ export default class MessageEntrance extends Emiter { | @@ -381,6 +381,7 @@ export default class MessageEntrance extends Emiter { | ||
| 381 | if (_video_ape) { | 381 | if (_video_ape) { |
| 382 | _video_ape.stopPublishVideo(data); | 382 | _video_ape.stopPublishVideo(data); |
| 383 | 383 | ||
| 384 | + //停止屏幕共享 | ||
| 384 | if(GlobalConfig.nodeId==data.nodeId){ | 385 | if(GlobalConfig.nodeId==data.nodeId){ |
| 385 | _video_ape.stopPublishScreenShare(data); | 386 | _video_ape.stopPublishScreenShare(data); |
| 386 | } | 387 | } |
| @@ -205,15 +205,19 @@ class AudioApe extends Ape { | @@ -205,15 +205,19 @@ class AudioApe extends Ape { | ||
| 205 | return {"code": ApeConsts.RETURN_FAILED, "data": "已经断开连接"}; | 205 | return {"code": ApeConsts.RETURN_FAILED, "data": "已经断开连接"}; |
| 206 | } | 206 | } |
| 207 | 207 | ||
| 208 | - let openingChannel = this.mediaModule.getOpeningMediaChannel(nodeId); | ||
| 209 | - if (openingChannel == 0) { | 208 | + let openingChannelInfo = this.mediaModule.getOpeningMediaChannelForNodeId(nodeId); |
| 209 | + if (openingChannelInfo.channelId == 0) { | ||
| 210 | loger.warn(nodeId,"没有占用频道不需要处理"); | 210 | loger.warn(nodeId,"没有占用频道不需要处理"); |
| 211 | return {"code": ApeConsts.RETURN_FAILED, "data": "没有占用channel不需要处理"}; | 211 | return {"code": ApeConsts.RETURN_FAILED, "data": "没有占用channel不需要处理"}; |
| 212 | } | 212 | } |
| 213 | 213 | ||
| 214 | let channelInfo=this.mediaModule.getDefaultChannelInfo(); | 214 | let channelInfo=this.mediaModule.getDefaultChannelInfo(); |
| 215 | channelInfo.status=ApeConsts.CHANNEL_STATUS_RELEASED; | 215 | channelInfo.status=ApeConsts.CHANNEL_STATUS_RELEASED; |
| 216 | - channelInfo.channelId=openingChannel; | 216 | + channelInfo.channelId=openingChannelInfo.channelId; |
| 217 | + channelInfo.nodeId=openingChannelInfo.fromNodeId; | ||
| 218 | + channelInfo.userRole=openingChannelInfo.userRole; | ||
| 219 | + channelInfo.userName=openingChannelInfo.userName; | ||
| 220 | + channelInfo.userId=openingChannelInfo.userId; | ||
| 217 | 221 | ||
| 218 | this.sendTableUpdateHandler(channelInfo); | 222 | this.sendTableUpdateHandler(channelInfo); |
| 219 | //递归检查,800毫秒之后执行 | 223 | //递归检查,800毫秒之后执行 |
| @@ -232,18 +232,20 @@ class MediaModule { | @@ -232,18 +232,20 @@ class MediaModule { | ||
| 232 | } | 232 | } |
| 233 | 233 | ||
| 234 | //获取当前属于nodeId的已经打开的的channel,返回值为0代表没有打开的,否则返回的就是打开的channelId | 234 | //获取当前属于nodeId的已经打开的的channel,返回值为0代表没有打开的,否则返回的就是打开的channelId |
| 235 | - getOpeningMediaChannel(_nodeId){ | 235 | + getOpeningMediaChannelForNodeId(_nodeId){ |
| 236 | loger.log("getOpeningMediaChannel","nodeId",_nodeId,"mediaChannels:",this.mediaChannels); | 236 | loger.log("getOpeningMediaChannel","nodeId",_nodeId,"mediaChannels:",this.mediaChannels); |
| 237 | + let channelInfo={}; | ||
| 238 | + channelInfo.channelId=0; | ||
| 237 | if(_nodeId==null||_nodeId==0){ | 239 | if(_nodeId==null||_nodeId==0){ |
| 238 | - return 0; | 240 | + return channelInfo; |
| 239 | } | 241 | } |
| 240 | for (let key in this.mediaChannels) { | 242 | for (let key in this.mediaChannels) { |
| 241 | let item = this.mediaChannels[key]; | 243 | let item = this.mediaChannels[key]; |
| 242 | if (item && item.status == ApeConsts.CHANNEL_STATUS_OPENING&&item.fromNodeId==_nodeId) { | 244 | if (item && item.status == ApeConsts.CHANNEL_STATUS_OPENING&&item.fromNodeId==_nodeId) { |
| 243 | - return item.channelId; | 245 | + return item; |
| 244 | } | 246 | } |
| 245 | } | 247 | } |
| 246 | - return 0; | 248 | + return channelInfo; |
| 247 | } | 249 | } |
| 248 | 250 | ||
| 249 | //检查频道是否已经被占用 | 251 | //检查频道是否已经被占用 |
| @@ -284,15 +284,19 @@ class VideoApe extends Ape { | @@ -284,15 +284,19 @@ class VideoApe extends Ape { | ||
| 284 | return {"code": ApeConsts.RETURN_FAILED, "data": "已经断开连接"}; | 284 | return {"code": ApeConsts.RETURN_FAILED, "data": "已经断开连接"}; |
| 285 | } | 285 | } |
| 286 | 286 | ||
| 287 | - let openingChannel = this.mediaModule.getOpeningMediaChannel(nodeId); | ||
| 288 | - if (openingChannel == 0) { | 287 | + let openingChannelInfo = this.mediaModule.getOpeningMediaChannelForNodeId(nodeId); |
| 288 | + if (openingChannelInfo.channelId== 0) { | ||
| 289 | loger.warn(nodeId,"没有占用channel不需要处理"); | 289 | loger.warn(nodeId,"没有占用channel不需要处理"); |
| 290 | return {"code": ApeConsts.RETURN_FAILED, "data": "没有占用channel不需要处理"}; | 290 | return {"code": ApeConsts.RETURN_FAILED, "data": "没有占用channel不需要处理"}; |
| 291 | } | 291 | } |
| 292 | 292 | ||
| 293 | let channelInfo=this.mediaModule.getDefaultChannelInfo(); | 293 | let channelInfo=this.mediaModule.getDefaultChannelInfo(); |
| 294 | channelInfo.status=ApeConsts.CHANNEL_STATUS_RELEASED; | 294 | channelInfo.status=ApeConsts.CHANNEL_STATUS_RELEASED; |
| 295 | - channelInfo.channelId=openingChannel; | 295 | + channelInfo.channelId=openingChannelInfo.channelId; |
| 296 | + channelInfo.nodeId=openingChannelInfo.fromNodeId;//发送消息的人员nodeId | ||
| 297 | + channelInfo.userRole=openingChannelInfo.userRole; | ||
| 298 | + channelInfo.userName=openingChannelInfo.userName; | ||
| 299 | + channelInfo.userId=openingChannelInfo.userId; | ||
| 296 | 300 | ||
| 297 | this.sendTableUpdateHandler(channelInfo); | 301 | this.sendTableUpdateHandler(channelInfo); |
| 298 | //递归检查,800毫秒之后执行 | 302 | //递归检查,800毫秒之后执行 |
-
请 注册 或 登录 后发表评论