[*] 日常优化

This commit is contained in:
acgist
2023-06-26 08:21:36 +08:00
parent c4677fb246
commit 0ae5309b62

View File

@@ -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
/** /**
* 桃夭 * 桃夭
*/ */