[+] 信令接入:status、score

This commit is contained in:
acgist
2023-03-08 08:12:49 +08:00
parent f53fe0eb20
commit 21f55f2759
41 changed files with 623 additions and 119 deletions

View File

@@ -393,6 +393,9 @@ class Taoyao {
case "media::consume":
this.mediaConsume(message, body);
break;
case "media::consumer::close":
me.mediaConsumerClose(message, body);
break;
case "media::produce":
this.mediaProduce(message, body);
break;
@@ -470,7 +473,7 @@ class Taoyao {
const usage = await worker.getResourceUsage();
console.info("Worker使用情况", worker.pid, usage);
}
console.info("路由数量:", this.mediasoupWorkers.length);
console.info("工作线程数量:", this.mediasoupWorkers.length);
console.info("房间数量:", this.rooms.size);
Array.from(this.rooms.values()).forEach((room) => room.usage());
}
@@ -656,15 +659,16 @@ class Taoyao {
consumer.streamId = streamId;
room.consumers.set(consumer.id, consumer);
consumer.on("transportclose", () => {
room.consumers.delete(consumer.id);
console.info("通道关闭同时关闭消费者:", consumer.id);
// 信令服务统一调度关闭
// consumer.close();
// room.consumers.delete(consumer.id);
});
consumer.on("producerclose", () => {
room.consumers.delete(consumer.id);
this.push(
protocol.buildMessage("media::consumer::close", {
consumerId: consumer.id,
})
);
console.info("生产者关闭同时关闭消费者:", consumer.id);
// 信令服务统一调度关闭
// consumer.close();
// room.consumers.delete(consumer.id);
});
consumer.on("producerpause", () => {
this.push(
@@ -683,8 +687,9 @@ class Taoyao {
consumer.on("score", (score) => {
this.push(
protocol.buildMessage("media::consumer::score", {
score: score,
roomId: roomId,
consumerId: consumer.id,
score,
})
);
});
@@ -705,10 +710,18 @@ class Taoyao {
trace
);
});
consumer.observer.on("close", () => {
this.push(
protocol.buildMessage("media::consumer::close", {
roomId: roomId,
consumerId: consumer.id
})
);
});
// TODO改为同步
//await this.request("media::consume", {
this.push(
protocol.buildMessage("media::consume", {
//await this.request("media::consume", {
kind: consumer.kind,
type: consumer.type,
roomId: roomId,
@@ -725,8 +738,9 @@ class Taoyao {
await consumer.resume();
this.push(
protocol.buildMessage("media::consumer::score", {
consumerId: consumer.id,
score: consumer.score,
roomId: roomId,
consumerId: consumer.id,
})
);
})()
@@ -740,6 +754,25 @@ class Taoyao {
}
}
/**
* 关闭消费者信令
*
* @param {*} message 消息
* @param {*} body 消息主体
*/
mediaConsumerClose(message, body) {
const { roomId, consumerId } = body;
const room = this.rooms.get(roomId);
const consumer = room.consumers.get(consumerId);
if(consumer) {
console.info("关闭消费者:", consumerId);
consumer.close();
room.consumers.delete(consumerId);
} else {
console.debug("关闭消费者无效:", consumerId);
}
}
/**
* 路由RTP协商信令
*