[*] 日常优化
This commit is contained in:
@@ -1254,11 +1254,10 @@ class Taoyao {
|
|||||||
/**
|
/**
|
||||||
* 生产数据信令
|
* 生产数据信令
|
||||||
*
|
*
|
||||||
* @param {*} message 消息
|
* @param {*} message 信令消息
|
||||||
* @param {*} body 消息主体
|
* @param {*} body 消息主体
|
||||||
*/
|
*/
|
||||||
async mediaDataProduce(message, body) {
|
async mediaDataProduce(message, body) {
|
||||||
const me = this;
|
|
||||||
const {
|
const {
|
||||||
label,
|
label,
|
||||||
roomId,
|
roomId,
|
||||||
@@ -1269,10 +1268,10 @@ class Taoyao {
|
|||||||
transportId,
|
transportId,
|
||||||
sctpStreamParameters,
|
sctpStreamParameters,
|
||||||
} = body;
|
} = body;
|
||||||
const room = me.rooms.get(roomId);
|
const room = this.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 dataProducer = await transport.produceData({
|
const dataProducer = await transport.produceData({
|
||||||
@@ -1284,27 +1283,27 @@ 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, streamId);
|
console.debug("创建数据生产者", dataProducer.id, streamId);
|
||||||
dataProducer.on("transportclose", () => {
|
dataProducer.on("transportclose", () => {
|
||||||
console.info("数据生产者关闭(通道关闭)", dataProducer.id, streamId);
|
console.debug("数据生产者关闭(通道关闭)", 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.id, streamId);
|
console.debug("数据生产者关闭", dataProducer.id, streamId);
|
||||||
me.push(taoyaoProtocol.buildMessage("media::data::producer::close", {
|
this.push(taoyaoProtocol.buildMessage("media::data::producer::close", {
|
||||||
roomId : roomId,
|
roomId,
|
||||||
producerId: dataProducer.id,
|
producerId: dataProducer.id,
|
||||||
}));
|
}));
|
||||||
} else {
|
} else {
|
||||||
console.debug("数据生产者关闭(无效)", dataProducer.id, streamId);
|
console.debug("数据生产者关闭(数据生产者无效)", dataProducer.id, streamId);
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
message.body = {
|
message.body = {
|
||||||
roomId : roomId,
|
roomId,
|
||||||
producerId: dataProducer.id
|
producerId: dataProducer.id
|
||||||
};
|
};
|
||||||
me.push(message);
|
this.push(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -1935,27 +1935,6 @@ class Taoyao extends RemoteClient {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 通过数据消费者发送数据
|
|
||||||
*
|
|
||||||
* @param {*} data 数据
|
|
||||||
* @param {*} consumerId 数据消费者ID
|
|
||||||
*/
|
|
||||||
async sendDataConsumer(data, consumerId) {
|
|
||||||
const me = this;
|
|
||||||
if(consumerId) {
|
|
||||||
if(me.dataConsumers.has(consumerId)) {
|
|
||||||
me.dataConsumers.get(consumerId)?.send(data);
|
|
||||||
} else {
|
|
||||||
console.warn("数据消费者无效", consumerId);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
me.dataConsumers.forEach(dataConsumer => {
|
|
||||||
dataConsumer.send(data);
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 生产数据
|
* 生产数据
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -30,6 +30,10 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
"roomId" : "房间标识",
|
"roomId" : "房间标识",
|
||||||
"transportId": "通道标识"
|
"transportId": "通道标识"
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
"roomId" : "房间ID",
|
||||||
|
"producerId": "生产者ID",
|
||||||
|
}
|
||||||
"""
|
"""
|
||||||
},
|
},
|
||||||
flow = "终端=>信令服务->媒体服务"
|
flow = "终端=>信令服务->媒体服务"
|
||||||
@@ -51,18 +55,18 @@ public class MediaDataProduceProtocol extends ProtocolRoomAdapter {
|
|||||||
final Message response = room.requestMedia(message);
|
final Message response = room.requestMedia(message);
|
||||||
final Map<String, Object> responseBody = response.body();
|
final Map<String, Object> responseBody = response.body();
|
||||||
final String producerId = MapUtils.get(responseBody, Constant.PRODUCER_ID);
|
final String producerId = MapUtils.get(responseBody, Constant.PRODUCER_ID);
|
||||||
final ClientWrapper producerClientWrapper = room.clientWrapper(client);
|
final ClientWrapper producerClientWrapper = room.clientWrapper(client);
|
||||||
final Map<String, DataProducer> roomDataProducers = room.getDataProducers();
|
final Map<String, DataProducer> roomDataProducers = room.getDataProducers();
|
||||||
final Map<String, DataProducer> clientDataProducers = producerClientWrapper.getDataProducers();
|
final Map<String, DataProducer> clientDataProducers = producerClientWrapper.getDataProducers();
|
||||||
final DataProducer dataProducer = new DataProducer(streamId, producerId, room, producerClientWrapper);
|
final DataProducer dataProducer = new DataProducer(streamId, producerId, room, producerClientWrapper);
|
||||||
final DataProducer oldRoomDataProducer = roomDataProducers.put(producerId, dataProducer);
|
final DataProducer oldRoomDataProducer = roomDataProducers.put(producerId, dataProducer);
|
||||||
final DataProducer oldClientDataProducer = clientDataProducers.put(producerId, dataProducer);
|
final DataProducer oldClientDataProducer = clientDataProducers.put(producerId, dataProducer);
|
||||||
if(oldRoomDataProducer != null || oldClientDataProducer != null) {
|
if(oldRoomDataProducer != null || oldClientDataProducer != null) {
|
||||||
log.warn("数据生产者已经存在:{}", producerId);
|
log.warn("数据生产者已经存在:{}", producerId);
|
||||||
}
|
}
|
||||||
final Message responseMessage = response.cloneWithoutBody();
|
final Message responseMessage = response.cloneWithoutBody();
|
||||||
responseMessage.setBody(Map.of(
|
responseMessage.setBody(Map.of(
|
||||||
Constant.STREAM_ID, streamId,
|
Constant.STREAM_ID, streamId,
|
||||||
Constant.PRODUCER_ID, producerId
|
Constant.PRODUCER_ID, producerId
|
||||||
));
|
));
|
||||||
client.push(responseMessage);
|
client.push(responseMessage);
|
||||||
|
|||||||
Reference in New Issue
Block a user