[*] 日常优化
This commit is contained in:
@@ -224,6 +224,7 @@ const signalChannel = {
|
|||||||
*/
|
*/
|
||||||
close() {
|
close() {
|
||||||
const me = this;
|
const me = this;
|
||||||
|
console.info("关闭通道", me.address);
|
||||||
clearTimeout(me.heartbeatTimer);
|
clearTimeout(me.heartbeatTimer);
|
||||||
clearTimeout(me.reconnectTimer);
|
clearTimeout(me.reconnectTimer);
|
||||||
me.reconnection = false;
|
me.reconnection = false;
|
||||||
@@ -232,17 +233,15 @@ const signalChannel = {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
// TODO: continue
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 房间
|
* 房间
|
||||||
*/
|
*/
|
||||||
class Room {
|
class Room {
|
||||||
// 是否关闭
|
// 是否关闭
|
||||||
close = false;
|
close = null;
|
||||||
// 房间ID
|
// 房间ID
|
||||||
roomId = null;
|
roomId = null;
|
||||||
// 桃夭
|
// 桃夭信令
|
||||||
taoyao = null;
|
taoyao = null;
|
||||||
// WebRTCServer
|
// WebRTCServer
|
||||||
webRtcServer = null;
|
webRtcServer = null;
|
||||||
@@ -254,12 +253,12 @@ class Room {
|
|||||||
activeSpeakerObserver = null;
|
activeSpeakerObserver = null;
|
||||||
// 消费者复制数量
|
// 消费者复制数量
|
||||||
consumerReplicas = 0;
|
consumerReplicas = 0;
|
||||||
// 通道
|
// 媒体通道
|
||||||
transports = new Map();
|
transports = new Map();
|
||||||
// 生产者
|
// 媒体生产者
|
||||||
producers = new Map();
|
producers = new Map();
|
||||||
// 消费者
|
// 媒体消费者
|
||||||
consumers = new Map();
|
consumers = new Map();
|
||||||
// 数据通道生产者
|
// 数据通道生产者
|
||||||
dataProducers = new Map();
|
dataProducers = new Map();
|
||||||
// 数据通道消费者
|
// 数据通道消费者
|
||||||
@@ -273,9 +272,8 @@ class Room {
|
|||||||
audioLevelObserver,
|
audioLevelObserver,
|
||||||
activeSpeakerObserver,
|
activeSpeakerObserver,
|
||||||
}) {
|
}) {
|
||||||
this.close = false;
|
this.close = false;
|
||||||
this.roomId = roomId;
|
this.roomId = roomId;
|
||||||
this.networkThrottled = false;
|
|
||||||
this.taoyao = taoyao;
|
this.taoyao = taoyao;
|
||||||
this.webRtcServer = webRtcServer;
|
this.webRtcServer = webRtcServer;
|
||||||
this.mediasoupRouter = mediasoupRouter;
|
this.mediasoupRouter = mediasoupRouter;
|
||||||
@@ -289,7 +287,7 @@ class Room {
|
|||||||
*/
|
*/
|
||||||
handleAudioLevelObserver() {
|
handleAudioLevelObserver() {
|
||||||
const me = this;
|
const me = this;
|
||||||
// 静音
|
// 静音监控
|
||||||
me.audioLevelObserver.on("silence", () => {
|
me.audioLevelObserver.on("silence", () => {
|
||||||
signalChannel.push(
|
signalChannel.push(
|
||||||
protocol.buildMessage("media::audio::volume", {
|
protocol.buildMessage("media::audio::volume", {
|
||||||
@@ -297,70 +295,79 @@ class Room {
|
|||||||
})
|
})
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
// me.audioLevelObserver.observer.on("silence", fn());
|
// me.audioLevelObserver.observer.on("silence", () => {});
|
||||||
// 音量
|
// 音量监控
|
||||||
me.audioLevelObserver.on("volumes", (volumes) => {
|
me.audioLevelObserver.on("volumes", (volumes) => {
|
||||||
const volumeArray = [];
|
const notifyVolumes = [];
|
||||||
for (const value of volumes) {
|
for (const value of volumes) {
|
||||||
const { producer, volume } = value;
|
const { volume, producer } = value;
|
||||||
volumeArray.push({ volume: volume, clientId: producer.clientId });
|
notifyVolumes.push({
|
||||||
|
volume : volume,
|
||||||
|
clientId: producer.clientId
|
||||||
|
});
|
||||||
}
|
}
|
||||||
signalChannel.push(
|
signalChannel.push(
|
||||||
protocol.buildMessage("media::audio::volume", {
|
protocol.buildMessage("media::audio::volume", {
|
||||||
roomId: me.roomId,
|
roomId : me.roomId,
|
||||||
volumes: volumeArray
|
volumes: notifyVolumes
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
// me.audioLevelObserver.observer.on("volumes", fn(volumes));
|
// me.audioLevelObserver.observer.on("volumes", (volumes) => {});
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* 采样监控
|
* 当前讲话终端监控
|
||||||
*/
|
*/
|
||||||
handleActiveSpeakerObserver() {
|
handleActiveSpeakerObserver() {
|
||||||
const me = this;
|
const me = this;
|
||||||
|
// 不用通知直接使用音量监控即可
|
||||||
me.activeSpeakerObserver.on("dominantspeaker", (dominantSpeaker) => {
|
me.activeSpeakerObserver.on("dominantspeaker", (dominantSpeaker) => {
|
||||||
|
const producer = dominantSpeaker.producer;
|
||||||
console.debug(
|
console.debug(
|
||||||
"dominantspeaker:",
|
"handleActiveSpeakerObserver dominantspeaker",
|
||||||
dominantSpeaker.producer.id,
|
producer.id,
|
||||||
dominantSpeaker.producer.clientId
|
producer.clientId
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
// me.activeSpeakerObserver.observer.on("dominantspeaker", fn(dominantSpeaker));
|
// me.activeSpeakerObserver.observer.on("dominantspeaker", (dominantSpeaker) => {});
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* 使用情况
|
* 房间使用情况
|
||||||
*/
|
*/
|
||||||
usage() {
|
usage() {
|
||||||
console.info("房间标识:", this.roomId);
|
const me = this;
|
||||||
console.info("房间通道数量:", this.transports.size);
|
console.info("房间标识", me.roomId);
|
||||||
console.info("房间生产者数量:", this.producers.size);
|
console.info("房间媒体通道数量", me.transports.size);
|
||||||
console.info("房间消费者数量:", this.consumers.size);
|
console.info("房间媒体生产者数量", me.producers.size);
|
||||||
console.info("房间数据生产者数量:", this.dataProducers.size);
|
console.info("房间媒体消费者数量", me.consumers.size);
|
||||||
console.info("房间数据消费者数量:", this.dataConsumers.size);
|
console.info("房间数据生产者数量", me.dataProducers.size);
|
||||||
|
console.info("房间数据消费者数量", me.dataConsumers.size);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 关闭资源
|
* 关闭房间
|
||||||
*/
|
*/
|
||||||
closeAll() {
|
closeAll() {
|
||||||
const me = this;
|
const me = this;
|
||||||
if (me.close) {
|
if (me.close) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
console.info("关闭房间:", me.roomId);
|
console.info("关闭房间", me.roomId);
|
||||||
me.close = true;
|
me.close = true;
|
||||||
me.producers.forEach(v => v.close());
|
|
||||||
me.consumers.forEach(v => v.close());
|
|
||||||
me.dataProducers.forEach(v => v.close());
|
|
||||||
me.dataConsumers.forEach(v => v.close());
|
|
||||||
me.transports.forEach(v => v.close());
|
|
||||||
me.audioLevelObserver.close();
|
me.audioLevelObserver.close();
|
||||||
me.activeSpeakerObserver.close();
|
me.activeSpeakerObserver.close();
|
||||||
|
me.consumers.forEach(v => v.close());
|
||||||
|
me.producers.forEach(v => v.close());
|
||||||
|
me.dataConsumers.forEach(v => v.close());
|
||||||
|
me.dataProducers.forEach(v => v.close());
|
||||||
|
me.transports.forEach(v => v.close());
|
||||||
me.mediasoupRouter.close();
|
me.mediasoupRouter.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO:continue
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 桃夭
|
* 桃夭
|
||||||
*/
|
*/
|
||||||
|
|||||||
Reference in New Issue
Block a user