From c76d32cc58fd6fee3c1dd4c0bb1454197ff9569b Mon Sep 17 00:00:00 2001 From: acgist <289547414@qq.com> Date: Wed, 20 Sep 2023 07:21:04 +0800 Subject: [PATCH] =?UTF-8?q?[*]=20=E6=97=A5=E5=B8=B8=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- taoyao-client-media/src/Taoyao.js | 34 +++++----- taoyao-client-web/src/components/Taoyao.js | 62 +++++++++---------- .../media/MediaDataConsumerCloseProtocol.java | 2 +- .../MediaDataConsumerStatusProtocol.java | 7 +++ .../media/MediaDataProducerCloseProtocol.java | 8 ++- .../MediaDataProducerStatusProtocol.java | 2 +- .../media/MediaProducerCloseProtocol.java | 8 ++- .../media/MediaTransportCloseProtocol.java | 7 ++- 8 files changed, 72 insertions(+), 58 deletions(-) diff --git a/taoyao-client-media/src/Taoyao.js b/taoyao-client-media/src/Taoyao.js index 4870fa5..5fdf4bd 100644 --- a/taoyao-client-media/src/Taoyao.js +++ b/taoyao-client-media/src/Taoyao.js @@ -1181,15 +1181,13 @@ class Taoyao { // dataConsumer.on("sctpsendbufferfull", fn()); dataConsumer.observer.on("close", () => { if(room.dataConsumers.delete(dataConsumer.id)) { - console.info("数据消费者关闭", dataConsumer.id, streamId); - me.push( - protocol.buildMessage("media::data::consumer::close", { - roomId : roomId, - consumerId: dataConsumer.id, - }) - ); + console.debug("数据消费者关闭", dataConsumer.id, streamId); + me.push(protocol.buildMessage("media::data::consumer::close", { + roomId, + consumerId: dataConsumer.id, + })); } else { - console.debug("数据消费者关闭(无效)", dataConsumer.id, streamId); + console.debug("数据消费者关闭(数据消费者无效)", dataConsumer.id, streamId); } }); me.push( @@ -1211,20 +1209,22 @@ class Taoyao { /** * 关闭数据消费者信令 * - * @param {*} message 消息 + * @param {*} message 信令消息 * @param {*} body 消息主体 */ async mediaDataConsumerClose(message, body) { - const me = this; - const { roomId, consumerId } = body; - const room = me.rooms.get(roomId); + const { + roomId, + consumerId + } = body; + const room = this.rooms.get(roomId); const dataConsumer = room?.dataConsumers.get(consumerId); - if(dataConsumer) { - console.info("关闭数据消费者", consumerId); - await dataConsumer.close(); - } else { - console.info("关闭数据消费者(无效)", consumerId); + if(!dataConsumer) { + console.debug("关闭数据消费者(数据消费者无效)", roomId, consumerId); + return; } + console.debug("关闭数据消费者", consumerId); + await dataConsumer.close(); } /** diff --git a/taoyao-client-web/src/components/Taoyao.js b/taoyao-client-web/src/components/Taoyao.js index 5db2d6f..d9f4a54 100644 --- a/taoyao-client-web/src/components/Taoyao.js +++ b/taoyao-client-web/src/components/Taoyao.js @@ -1531,7 +1531,6 @@ class Taoyao extends RemoteClient { if (consumer) { console.debug("关闭消费者", consumerId); consumer.close(); - me.consumers.delete(consumerId); } else { console.debug("关闭消费者无效", consumerId); } @@ -1711,37 +1710,6 @@ class Taoyao extends RemoteClient { })); } - /** - * 关闭数据消费者信令 - * - * @param {*} consumerId 数据消费者ID - */ - mediaDataConsumerClose(consumerId) { - const me = this; - me.push(protocol.buildMessage("media::data::consumer::close", { - roomId : me.roomId, - consumerId: consumerId, - })); - } - - /** - * 关闭数据消费者信令 - * - * @param {*} message 信令消息 - */ - defaultMediaDataConsumerClose(message) { - const me = this; - const { roomId, consumerId } = message.body; - const dataConsumer = me.dataConsumers.get(consumerId); - if (dataConsumer) { - console.debug("关闭数据消费者", consumerId); - dataConsumer.close(); - me.dataConsumers.delete(consumerId); - } else { - console.debug("关闭数据消费者无效", consumerId); - } - } - /** * 消费媒体信令 * @@ -1920,6 +1888,36 @@ class Taoyao extends RemoteClient { } } + /** + * 关闭数据消费者信令 + * + * @param {*} consumerId 数据消费者ID + */ + mediaDataConsumerClose(consumerId) { + this.push(protocol.buildMessage("media::data::consumer::close", { + consumerId, + roomId: this.roomId, + })); + } + + /** + * 关闭数据消费者信令 + * + * @param {*} message 信令消息 + */ + defaultMediaDataConsumerClose(message) { + const { + consumerId + } = message.body; + const dataConsumer = this.dataConsumers.get(consumerId); + if (!dataConsumer) { + console.debug("关闭数据消费者(数据消费者无效)", consumerId); + return; + } + console.debug("关闭数据消费者", consumerId); + dataConsumer.close(); + } + /** * 查询数据消费者状态信令 * diff --git a/taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaDataConsumerCloseProtocol.java b/taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaDataConsumerCloseProtocol.java index 37c49e4..3b218f3 100644 --- a/taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaDataConsumerCloseProtocol.java +++ b/taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaDataConsumerCloseProtocol.java @@ -27,7 +27,7 @@ import lombok.extern.slf4j.Slf4j; @Slf4j @Protocol @Description( - memo = "关闭通过回调实现所以不能同步响应", + memo = "关闭通过回调实现所以不能同步响应,以下场景出现:主动断开、离开房间、信令断开", body = """ { "roomId" : "房间ID" diff --git a/taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaDataConsumerStatusProtocol.java b/taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaDataConsumerStatusProtocol.java index 0e75763..f688dd0 100644 --- a/taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaDataConsumerStatusProtocol.java +++ b/taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaDataConsumerStatusProtocol.java @@ -22,6 +22,13 @@ import com.acgist.taoyao.signal.protocol.ProtocolRoomAdapter; "roomId" : "房间ID", "consumerId": "数据消费者ID" } + { + "roomId" : "房间ID", + "consumerId": "数据消费者ID", + "status" : [ + ...状态信息 + ] + } """, flow = "终端=>信令服务->媒体服务" ) 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 67575c1..d17b008 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 @@ -27,14 +27,18 @@ import lombok.extern.slf4j.Slf4j; @Slf4j @Protocol @Description( - memo = "关闭通过回调实现所以不能同步响应", + memo = "关闭通过回调实现所以不能同步响应,以下场景出现:主动断开、离开房间、信令断开", body = """ { "roomId" : "房间ID" "consumerId": "数据生产者ID" } """, - flow = "终端->信令服务->媒体服务->信令服务->终端" + flow = { + "媒体服务->信令服务->终端", + "信令服务->媒体服务->信令服务->终端", + "终端->信令服务->媒体服务->信令服务->终端" + } ) public class MediaDataProducerCloseProtocol extends ProtocolRoomAdapter implements ApplicationListener { diff --git a/taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaDataProducerStatusProtocol.java b/taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaDataProducerStatusProtocol.java index da57826..42791d3 100644 --- a/taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaDataProducerStatusProtocol.java +++ b/taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaDataProducerStatusProtocol.java @@ -24,7 +24,7 @@ import com.acgist.taoyao.signal.protocol.ProtocolRoomAdapter; } { "roomId" : "房间ID", - "producerId": "生产者ID", + "producerId": "数据生产者ID", "status" : [ ...状态信息 ] diff --git a/taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaProducerCloseProtocol.java b/taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaProducerCloseProtocol.java index 1c9e2d7..aa74c35 100644 --- a/taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaProducerCloseProtocol.java +++ b/taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaProducerCloseProtocol.java @@ -27,14 +27,18 @@ import lombok.extern.slf4j.Slf4j; @Slf4j @Protocol @Description( - memo = "关闭通过回调实现所以不能同步响应", + memo = "关闭通过回调实现所以不能同步响应,以下场景出现:主动断开、离开房间、信令断开", body = """ { "roomId" : "房间ID" "consumerId": "生产者ID" } """, - flow = "终端->信令服务->媒体服务->信令服务->终端" + flow = { + "媒体服务->信令服务->终端", + "信令服务->媒体服务->信令服务->终端", + "终端->信令服务->媒体服务->信令服务->终端" + } ) public class MediaProducerCloseProtocol extends ProtocolRoomAdapter implements ApplicationListener { diff --git a/taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaTransportCloseProtocol.java b/taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaTransportCloseProtocol.java index 40b8836..b3c051b 100644 --- a/taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaTransportCloseProtocol.java +++ b/taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaTransportCloseProtocol.java @@ -27,7 +27,7 @@ import lombok.extern.slf4j.Slf4j; @Slf4j @Protocol @Description( - memo = "关闭通过回调实现所以不能同步响应", + memo = "关闭通过回调实现所以不能同步响应,以下场景出现:主动断开、离开房间、信令断开", body = """ { "roomId" : "房间ID" @@ -35,8 +35,9 @@ import lombok.extern.slf4j.Slf4j; } """, flow = { - "终端->信令服务->媒体服务->信令服务->终端", - "终端-[离开房间]>信令服务->媒体服务->信令服务->终端" + "媒体服务->信令服务->终端", + "信令服务->媒体服务->信令服务->终端", + "终端->信令服务->媒体服务->信令服务->终端" } ) public class MediaTransportCloseProtocol extends ProtocolRoomAdapter implements ApplicationListener {