[*] 日常优化
This commit is contained in:
@@ -851,7 +851,7 @@ class Taoyao {
|
|||||||
const room = me.rooms.get(roomId);
|
const room = me.rooms.get(roomId);
|
||||||
const transport = room?.transports.get(transportId);
|
const transport = room?.transports.get(transportId);
|
||||||
if(!transport) {
|
if(!transport) {
|
||||||
console.warn("生成媒体通道无效", roomId, transportId);
|
console.warn("生产媒体通道无效", roomId, transportId);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const producer = await transport.produce({
|
const producer = await transport.produce({
|
||||||
@@ -1098,7 +1098,7 @@ class Taoyao {
|
|||||||
me.push(
|
me.push(
|
||||||
protocol.buildMessage("media::consumer::layers::change", {
|
protocol.buildMessage("media::consumer::layers::change", {
|
||||||
roomId : roomId,
|
roomId : roomId,
|
||||||
consumerId: consumer.id,
|
consumerId : consumer.id,
|
||||||
spatialLayer : layers ? layers.spatialLayer : null,
|
spatialLayer : layers ? layers.spatialLayer : null,
|
||||||
temporalLayer: layers ? layers.temporalLayer : null,
|
temporalLayer: layers ? layers.temporalLayer : null,
|
||||||
})
|
})
|
||||||
@@ -1143,14 +1143,14 @@ class Taoyao {
|
|||||||
// 等待终端准备就绪:可以不用等待直接使用push方法
|
// 等待终端准备就绪:可以不用等待直接使用push方法
|
||||||
await me.request(
|
await me.request(
|
||||||
protocol.buildMessage("media::consume", {
|
protocol.buildMessage("media::consume", {
|
||||||
kind : consumer.kind,
|
|
||||||
type : consumer.type,
|
|
||||||
roomId : roomId,
|
roomId : roomId,
|
||||||
clientId : clientId,
|
clientId : clientId,
|
||||||
sourceId : sourceId,
|
sourceId : sourceId,
|
||||||
streamId : streamId,
|
streamId : streamId,
|
||||||
producerId : producerId,
|
producerId : producerId,
|
||||||
consumerId : consumer.id,
|
consumerId : consumer.id,
|
||||||
|
kind : consumer.kind,
|
||||||
|
type : consumer.type,
|
||||||
appData : producer.appData,
|
appData : producer.appData,
|
||||||
rtpParameters : consumer.rtpParameters,
|
rtpParameters : consumer.rtpParameters,
|
||||||
producerPaused: consumer.producerPaused,
|
producerPaused: consumer.producerPaused,
|
||||||
@@ -1278,8 +1278,6 @@ class Taoyao {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO:continue
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 消费数据信令
|
* 消费数据信令
|
||||||
*
|
*
|
||||||
@@ -1297,7 +1295,7 @@ class Taoyao {
|
|||||||
transportId,
|
transportId,
|
||||||
rtpCapabilities,
|
rtpCapabilities,
|
||||||
} = body;
|
} = body;
|
||||||
const room = this.rooms.get(roomId);
|
const room = me.rooms.get(roomId);
|
||||||
const transport = room?.transports.get(transportId);
|
const transport = room?.transports.get(transportId);
|
||||||
const dataProducer = room?.dataProducers.get(producerId);
|
const dataProducer = room?.dataProducers.get(producerId);
|
||||||
if (
|
if (
|
||||||
@@ -1305,13 +1303,7 @@ class Taoyao {
|
|||||||
!transport ||
|
!transport ||
|
||||||
!dataProducer
|
!dataProducer
|
||||||
) {
|
) {
|
||||||
console.warn(
|
console.warn("不能消费数据", body);
|
||||||
"不能消费数据:",
|
|
||||||
roomId,
|
|
||||||
clientId,
|
|
||||||
producerId,
|
|
||||||
transportId
|
|
||||||
);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
let dataConsumer;
|
let dataConsumer;
|
||||||
@@ -1320,48 +1312,45 @@ class Taoyao {
|
|||||||
dataProducerId : dataProducer.id
|
dataProducerId : dataProducer.id
|
||||||
});
|
});
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error("消费数据异常:", producerId, error);
|
console.error("创建数据消费者异常", body, error);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
dataConsumer.clientId = clientId;
|
dataConsumer.clientId = clientId;
|
||||||
dataConsumer.streamId = streamId;
|
dataConsumer.streamId = streamId;
|
||||||
room.dataConsumers.set(dataConsumer.id, dataConsumer);
|
room.dataConsumers.set(dataConsumer.id, dataConsumer);
|
||||||
console.info("创建数据消费者:", dataProducer.id);
|
console.debug("创建数据消费者", dataProducer.id, streamId);
|
||||||
dataConsumer.on('transportclose', () => {
|
dataConsumer.on('transportclose', () => {
|
||||||
console.info("dataConsumer transportclose:", dataConsumer.id);
|
console.info("数据消费者关闭(通道关闭)", dataConsumer.id, streamId);
|
||||||
dataConsumer.close();
|
dataConsumer.close();
|
||||||
});
|
});
|
||||||
dataConsumer.on('dataproducerclose', () => {
|
dataConsumer.on('dataproducerclose', () => {
|
||||||
console.info("dataConsumer dataproducerclose:", dataConsumer.id);
|
console.info("数据消费者关闭(生产者关闭)", dataConsumer.id, streamId);
|
||||||
dataConsumer.close();
|
dataConsumer.close();
|
||||||
});
|
});
|
||||||
dataConsumer.observer.on("close", () => {
|
dataConsumer.observer.on("close", () => {
|
||||||
if(room.dataConsumers.delete(dataConsumer.id)) {
|
if(room.dataConsumers.delete(dataConsumer.id)) {
|
||||||
console.info("dataConsumer close:", dataConsumer.id);
|
console.info("数据消费者关闭", dataConsumer.id, streamId);
|
||||||
me.push(
|
me.push(
|
||||||
protocol.buildMessage("media::data::consumer::close", {
|
protocol.buildMessage("media::data::consumer::close", {
|
||||||
roomId: roomId,
|
roomId : roomId,
|
||||||
consumerId: dataConsumer.id,
|
consumerId: dataConsumer.id,
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
console.info("dataConsumer close non:", dataConsumer.id);
|
console.debug("数据消费者关闭(无效)", dataConsumer.id, streamId);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
// dataConsumer.on("message", fn(message, ppid));
|
me.push(
|
||||||
// dataConsumer.on("bufferedamountlow", fn(bufferedAmount));
|
|
||||||
// dataConsumer.on("sctpsendbufferfull", fn());
|
|
||||||
this.push(
|
|
||||||
protocol.buildMessage("media::data::consume", {
|
protocol.buildMessage("media::data::consume", {
|
||||||
label: dataConsumer.label,
|
roomId : roomId,
|
||||||
roomId: roomId,
|
clientId : clientId,
|
||||||
appData: dataProducer.appData,
|
sourceId : sourceId,
|
||||||
protocol: dataConsumer.protocol,
|
streamId : streamId,
|
||||||
clientId: clientId,
|
producerId : producerId,
|
||||||
sourceId: sourceId,
|
consumerId : dataConsumer.id,
|
||||||
streamId: streamId,
|
label : dataConsumer.label,
|
||||||
producerId: producerId,
|
appData : dataProducer.appData,
|
||||||
consumerId: dataConsumer.id,
|
protocol : dataConsumer.protocol,
|
||||||
sctpStreamParameters: dataConsumer.sctpStreamParameters,
|
sctpStreamParameters: dataConsumer.sctpStreamParameters,
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
@@ -1374,14 +1363,15 @@ class Taoyao {
|
|||||||
* @param {*} body 消息主体
|
* @param {*} body 消息主体
|
||||||
*/
|
*/
|
||||||
async mediaDataConsumerClose(message, body) {
|
async mediaDataConsumerClose(message, body) {
|
||||||
|
const me = this;
|
||||||
const { roomId, consumerId } = body;
|
const { roomId, consumerId } = body;
|
||||||
const room = this.rooms.get(roomId);
|
const room = me.rooms.get(roomId);
|
||||||
const dataConsumer = room?.dataConsumers.get(consumerId);
|
const dataConsumer = room?.dataConsumers.get(consumerId);
|
||||||
if(dataConsumer) {
|
if(dataConsumer) {
|
||||||
console.info("关闭数据消费者:", consumerId);
|
console.info("关闭数据消费者", consumerId);
|
||||||
await dataConsumer.close();
|
await dataConsumer.close();
|
||||||
} else {
|
} else {
|
||||||
console.info("关闭数据消费者无效:", consumerId);
|
console.info("关闭数据消费者(无效)", consumerId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1406,7 +1396,7 @@ class Taoyao {
|
|||||||
const room = me.rooms.get(roomId);
|
const room = me.rooms.get(roomId);
|
||||||
const transport = room?.transports.get(transportId);
|
const transport = room?.transports.get(transportId);
|
||||||
if(!transport) {
|
if(!transport) {
|
||||||
console.warn("生产数据生产者通道无效:", transportId);
|
console.warn("生产数据通道无效", roomId, transportId);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const dataProducer = await transport.produceData({
|
const dataProducer = await transport.produceData({
|
||||||
@@ -1418,26 +1408,29 @@ class Taoyao {
|
|||||||
dataProducer.clientId = clientId;
|
dataProducer.clientId = clientId;
|
||||||
dataProducer.streamId = streamId;
|
dataProducer.streamId = streamId;
|
||||||
room.dataProducers.set(dataProducer.id, dataProducer);
|
room.dataProducers.set(dataProducer.id, dataProducer);
|
||||||
console.info("创建数据生产者:", dataProducer.id);
|
console.info("创建数据生产者", dataProducer.id, streamId);
|
||||||
dataProducer.on("transportclose", () => {
|
dataProducer.on("transportclose", () => {
|
||||||
console.info("dataProducer transportclose:", dataProducer.id);
|
console.info("数据生产者关闭(通道关闭)", dataProducer.id, streamId);
|
||||||
dataProducer.close();
|
dataProducer.close();
|
||||||
});
|
});
|
||||||
dataProducer.observer.on("close", () => {
|
dataProducer.observer.on("close", () => {
|
||||||
if(room.dataProducers.delete(dataProducer.id)) {
|
if(room.dataProducers.delete(dataProducer.id)) {
|
||||||
console.info("dataProducer close:", dataProducer.id);
|
console.info("数据生产者关闭", dataProducer.id, streamId);
|
||||||
me.push(
|
me.push(
|
||||||
taoyaoProtocol.buildMessage("media::data::producer::close", {
|
taoyaoProtocol.buildMessage("media::data::producer::close", {
|
||||||
roomId: roomId,
|
roomId : roomId,
|
||||||
producerId: dataProducer.id,
|
producerId: dataProducer.id,
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
console.info("dataProducer close non:", dataProducer.id);
|
console.debug("数据生产者关闭(无效)", dataProducer.id, streamId);
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
message.body = { roomId: roomId, producerId: dataProducer.id };
|
message.body = {
|
||||||
this.push(message);
|
roomId : roomId,
|
||||||
|
producerId: dataProducer.id
|
||||||
|
};
|
||||||
|
me.push(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1447,17 +1440,20 @@ class Taoyao {
|
|||||||
* @param {*} body 消息主体
|
* @param {*} body 消息主体
|
||||||
*/
|
*/
|
||||||
async mediaDataProducerClose(message, body) {
|
async mediaDataProducerClose(message, body) {
|
||||||
|
const me = this;
|
||||||
const { roomId, producerId } = body;
|
const { roomId, producerId } = body;
|
||||||
const room = this.rooms.get(roomId);
|
const room = me.rooms.get(roomId);
|
||||||
const dataProducer = room?.dataProducers.get(producerId);
|
const dataProducer = room?.dataProducers.get(producerId);
|
||||||
if(dataProducer) {
|
if(dataProducer) {
|
||||||
console.info("关闭数据生产者:", producerId);
|
console.info("关闭数据生产者", producerId);
|
||||||
await dataProducer.close();
|
await dataProducer.close();
|
||||||
} else {
|
} else {
|
||||||
console.info("关闭数据生产者无效:", producerId);
|
console.info("关闭数据生产者(无效)", producerId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO:continue
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 路由RTP协商信令
|
* 路由RTP协商信令
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -1510,8 +1510,15 @@ class Taoyao extends RemoteClient {
|
|||||||
console.error("dataConsumer error:", dataConsumer.id, error);
|
console.error("dataConsumer error:", dataConsumer.id, error);
|
||||||
dataConsumer.close();
|
dataConsumer.close();
|
||||||
});
|
});
|
||||||
dataConsumer.on('message', (message) => {
|
// dataConsumer.on("bufferedamountlow", fn(bufferedAmount));
|
||||||
|
// dataConsumer.on("sctpsendbufferfull", fn());
|
||||||
|
dataConsumer.on('message', (message, ppid) => {
|
||||||
console.info("dataConsume message:", dataConsumer.id, message);
|
console.info("dataConsume message:", dataConsumer.id, message);
|
||||||
|
if (ppid === 51) {
|
||||||
|
console.log("文本", message.toString("utf-8"));
|
||||||
|
} else if (ppid === 53) {
|
||||||
|
console.log("二进制");
|
||||||
|
}
|
||||||
});
|
});
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error("打开数据消费者异常", error);
|
console.error("打开数据消费者异常", error);
|
||||||
@@ -2141,6 +2148,7 @@ class Taoyao extends RemoteClient {
|
|||||||
*/
|
*/
|
||||||
async produceData() {
|
async produceData() {
|
||||||
const me = this;
|
const me = this;
|
||||||
|
// TODO:判断dataProduce
|
||||||
try {
|
try {
|
||||||
const dataProducer = await me.sendTransport.produceData({
|
const dataProducer = await me.sendTransport.produceData({
|
||||||
ordered: false,
|
ordered: false,
|
||||||
@@ -2163,9 +2171,6 @@ class Taoyao extends RemoteClient {
|
|||||||
console.debug("dataProducer transportclose:", me.dataProducer.id);
|
console.debug("dataProducer transportclose:", me.dataProducer.id);
|
||||||
me.dataProducer.close();
|
me.dataProducer.close();
|
||||||
});
|
});
|
||||||
me.dataProducer.on("bufferedamountlow", () => {
|
|
||||||
console.debug("dataProducer bufferedamountlow:", me.dataProducer.id);
|
|
||||||
});
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
me.callbackError("生产数据异常", error);
|
me.callbackError("生产数据异常", error);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user