diff --git a/taoyao-client-media/src/Taoyao.js b/taoyao-client-media/src/Taoyao.js index a6bdaf6..f81a570 100644 --- a/taoyao-client-media/src/Taoyao.js +++ b/taoyao-client-media/src/Taoyao.js @@ -1310,20 +1310,22 @@ class Taoyao { /** * 关闭数据生产者信令 * - * @param {*} message 消息 + * @param {*} message 信令消息 * @param {*} body 消息主体 */ async mediaDataProducerClose(message, body) { - const me = this; - const { roomId, producerId } = body; - const room = me.rooms.get(roomId); + const { + roomId, + producerId + } = body; + const room = this.rooms.get(roomId); const dataProducer = room?.dataProducers.get(producerId); - if(dataProducer) { - console.info("关闭数据生产者", producerId); - await dataProducer.close(); - } else { - console.info("关闭数据生产者(无效)", producerId); + if(!dataProducer) { + console.debug("关闭数据生产者(数据生产者无效)", roomId, producerId); + return; } + console.debug("关闭数据生产者", producerId); + await dataProducer.close(); } /** diff --git a/taoyao-client-web/src/components/Taoyao.js b/taoyao-client-web/src/components/Taoyao.js index 47f5197..22c7c02 100644 --- a/taoyao-client-web/src/components/Taoyao.js +++ b/taoyao-client-web/src/components/Taoyao.js @@ -1755,38 +1755,6 @@ class Taoyao extends RemoteClient { })); } - /** - * 关闭数据生产者信令 - * - * @param {*} producerId 数据生产者ID - */ - mediaDataProducerClose(producerId) { - this.push( - protocol.buildMessage("media::data::producer::close", { - roomId : this.roomId, - producerId: producerId - }) - ); - } - - /** - * 关闭数据生产者信令 - * - * @param {*} message 信令消息 - */ - defaultMediaDataProducerClose(message) { - const me = this; - const { roomId, producerId } = message.body; - const producer = me.getProducer(producerId); - if (producer) { - console.debug("关闭数据生产者", producerId); - producer.close(); - me.dataProducer = null; - } else { - console.debug("关闭数据生产者无效", producerId); - } - } - /** * 消费媒体信令 * @@ -2043,6 +2011,36 @@ class Taoyao extends RemoteClient { this.mediaDataProducerClose(this.dataProducer?.id); } + /** + * 关闭数据生产者信令 + * + * @param {*} producerId 数据生产者ID + */ + mediaDataProducerClose(producerId) { + this.push(protocol.buildMessage("media::data::producer::close", { + producerId, + roomId: this.roomId, + })); + } + + /** + * 关闭数据生产者信令 + * + * @param {*} message 信令消息 + */ + defaultMediaDataProducerClose(message) { + const { + producerId + } = message.body; + const producer = this.getProducer(producerId); + if(!producer) { + console.debug("关闭数据生产者(数据生产者无效)", producerId); + return; + } + console.debug("关闭数据生产者", producerId); + producer.close(); + } + /** * 查询数据生产者状态信令 * @@ -2416,13 +2414,6 @@ class Taoyao extends RemoteClient { } console.debug("关闭生产者", producerId); producer.close(); - if(producer.kind === "audio") { - this.audioProducer = null; - } else if(producer.kind === "video") { - this.videoProducer = null; - } else { - console.warn("关闭生产者(生产者类型不支持)", producerId, producer.kind); - } } /** diff --git a/taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaDataProducerCloseProtocol.java b/taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaDataProducerCloseProtocol.java index db04702..67575c1 100644 --- a/taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaDataProducerCloseProtocol.java +++ b/taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaDataProducerCloseProtocol.java @@ -47,7 +47,7 @@ public class MediaDataProducerCloseProtocol extends ProtocolRoomAdapter implemen @Async @Override public void onApplicationEvent(MediaDataProducerCloseEvent event) { - final Room room = event.getRoom(); + final Room room = event.getRoom(); final Client mediaClient = event.getMediaClient(); final Map body = Map.of( Constant.ROOM_ID, room.getRoomId(), @@ -58,7 +58,7 @@ public class MediaDataProducerCloseProtocol extends ProtocolRoomAdapter implemen @Override public void execute(String clientId, ClientType clientType, Room room, Client client, Client mediaClient, Message message, Map body) { - final String producerId = MapUtils.get(body, Constant.PRODUCER_ID); + final String producerId = MapUtils.get(body, Constant.PRODUCER_ID); final DataProducer dataProducer = room.dataProducer(producerId); if(dataProducer == null) { log.debug("数据生产者无效:{} - {}", producerId, clientType);