李勇

修复视频模块和音频模块,释放nodeId对应的频道信息时 信息不一致的问题,课堂中正在推流的人员掉线之后,课堂内释放占用的频道时,信息应该按使用者的信息来释放

此 diff 太大无法显示。
... ... @@ -32,7 +32,7 @@ import QuestionApe from 'apes/QuestionApe';
import UTF8 from 'utf-8';
let loger = Loger.getLoger('McuClient');
let _sdkInfo = {"version": "v1.35.4.20170619", "author": "www.3mang.com"};
let _sdkInfo = {"version": "v1.36.1.20170619", "author": "www.3mang.com"};
//APE
let _sass;
... ... @@ -381,6 +381,7 @@ export default class MessageEntrance extends Emiter {
if (_video_ape) {
_video_ape.stopPublishVideo(data);
//停止屏幕共享
if(GlobalConfig.nodeId==data.nodeId){
_video_ape.stopPublishScreenShare(data);
}
... ...
... ... @@ -205,15 +205,19 @@ class AudioApe extends Ape {
return {"code": ApeConsts.RETURN_FAILED, "data": "已经断开连接"};
}
let openingChannel = this.mediaModule.getOpeningMediaChannel(nodeId);
if (openingChannel == 0) {
let openingChannelInfo = this.mediaModule.getOpeningMediaChannelForNodeId(nodeId);
if (openingChannelInfo.channelId == 0) {
loger.warn(nodeId,"没有占用频道不需要处理");
return {"code": ApeConsts.RETURN_FAILED, "data": "没有占用channel不需要处理"};
}
let channelInfo=this.mediaModule.getDefaultChannelInfo();
channelInfo.status=ApeConsts.CHANNEL_STATUS_RELEASED;
channelInfo.channelId=openingChannel;
channelInfo.channelId=openingChannelInfo.channelId;
channelInfo.nodeId=openingChannelInfo.fromNodeId;
channelInfo.userRole=openingChannelInfo.userRole;
channelInfo.userName=openingChannelInfo.userName;
channelInfo.userId=openingChannelInfo.userId;
this.sendTableUpdateHandler(channelInfo);
//递归检查,800毫秒之后执行
... ...
... ... @@ -232,18 +232,20 @@ class MediaModule {
}
//获取当前属于nodeId的已经打开的的channel,返回值为0代表没有打开的,否则返回的就是打开的channelId
getOpeningMediaChannel(_nodeId){
getOpeningMediaChannelForNodeId(_nodeId){
loger.log("getOpeningMediaChannel","nodeId",_nodeId,"mediaChannels:",this.mediaChannels);
let channelInfo={};
channelInfo.channelId=0;
if(_nodeId==null||_nodeId==0){
return 0;
return channelInfo;
}
for (let key in this.mediaChannels) {
let item = this.mediaChannels[key];
if (item && item.status == ApeConsts.CHANNEL_STATUS_OPENING&&item.fromNodeId==_nodeId) {
return item.channelId;
return item;
}
}
return 0;
return channelInfo;
}
//检查频道是否已经被占用
... ...
... ... @@ -284,15 +284,19 @@ class VideoApe extends Ape {
return {"code": ApeConsts.RETURN_FAILED, "data": "已经断开连接"};
}
let openingChannel = this.mediaModule.getOpeningMediaChannel(nodeId);
if (openingChannel == 0) {
let openingChannelInfo = this.mediaModule.getOpeningMediaChannelForNodeId(nodeId);
if (openingChannelInfo.channelId== 0) {
loger.warn(nodeId,"没有占用channel不需要处理");
return {"code": ApeConsts.RETURN_FAILED, "data": "没有占用channel不需要处理"};
}
let channelInfo=this.mediaModule.getDefaultChannelInfo();
channelInfo.status=ApeConsts.CHANNEL_STATUS_RELEASED;
channelInfo.channelId=openingChannel;
channelInfo.channelId=openingChannelInfo.channelId;
channelInfo.nodeId=openingChannelInfo.fromNodeId;//发送消息的人员nodeId
channelInfo.userRole=openingChannelInfo.userRole;
channelInfo.userName=openingChannelInfo.userName;
channelInfo.userId=openingChannelInfo.userId;
this.sendTableUpdateHandler(channelInfo);
//递归检查,800毫秒之后执行
... ...