From a50fb071d7644217d88acbb5bb3dd3caa5b30abb Mon Sep 17 00:00:00 2001
From: acgist <289547414@qq.com>
Date: Sun, 5 Mar 2023 16:02:46 +0800
Subject: [PATCH] =?UTF-8?q?[*]=20=E4=BC=98=E5=8C=96=E5=AA=92=E4=BD=93?=
=?UTF-8?q?=E6=B6=88=E8=B4=B9=E9=80=BB=E8=BE=91?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
taoyao-client-web/src/App.vue | 2 +-
taoyao-client-web/src/components/Taoyao.js | 15 ++++
.../signal/event/MediaProduceEvent.java | 16 +++-
...ientListEvent.java => RoomEnterEvent.java} | 6 +-
.../signal/party/media/ClientWrapper.java | 36 +++++++--
.../taoyao/signal/party/media/Producer.java | 13 +++
.../taoyao/signal/party/media/Room.java | 28 ++++++-
.../signal/party/media/RoomManager.java | 33 ++++----
.../protocol/media/MediaConsumeProtocol.java | 79 ++++++++++++-------
.../MediaTransportWebRtcCreateProtocol.java | 15 +---
.../protocol/room/RoomClientListProtocol.java | 6 +-
.../protocol/room/RoomCloseProtocol.java | 1 -
.../protocol/room/RoomEnterProtocol.java | 6 +-
13 files changed, 173 insertions(+), 83 deletions(-)
rename taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/event/{RoomClientListEvent.java => RoomEnterEvent.java} (73%)
diff --git a/taoyao-client-web/src/App.vue b/taoyao-client-web/src/App.vue
index 7e463a8..7807e53 100644
--- a/taoyao-client-web/src/App.vue
+++ b/taoyao-client-web/src/App.vue
@@ -65,7 +65,7 @@
选择房间
创建房间
邀请终端
- 退出房间
+ 离开房间
关闭房间
diff --git a/taoyao-client-web/src/components/Taoyao.js b/taoyao-client-web/src/components/Taoyao.js
index 24042a8..4bcb8f6 100644
--- a/taoyao-client-web/src/components/Taoyao.js
+++ b/taoyao-client-web/src/components/Taoyao.js
@@ -503,6 +503,9 @@ class Taoyao extends RemoteClient {
case "room::enter":
me.defaultRoomEnter(message);
break;
+ case "room::leave":
+ me.defaultRoomLeave(message);
+ break;
case "platform::error":
me.callbackError(message);
break;
@@ -780,6 +783,18 @@ class Taoyao extends RemoteClient {
me.remoteClients.set(clientId, new RemoteClient(status));
}
}
+ /**
+ * 离开房间信令
+ *
+ * @param {*} message
+ */
+ defaultRoomLeave(message) {
+ const me = this;
+ const { clientId } = message.body;
+ me.remoteClients.delete(clientId);
+ console.info("终端离开:", clientId);
+ // TODO:资源释放
+ }
/**
* 错误回调
*/
diff --git a/taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/event/MediaProduceEvent.java b/taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/event/MediaProduceEvent.java
index b446815..cec35f5 100644
--- a/taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/event/MediaProduceEvent.java
+++ b/taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/event/MediaProduceEvent.java
@@ -1,5 +1,6 @@
package com.acgist.taoyao.signal.event;
+import com.acgist.taoyao.signal.party.media.ClientWrapper;
import com.acgist.taoyao.signal.party.media.Producer;
import com.acgist.taoyao.signal.party.media.Room;
@@ -7,7 +8,7 @@ import lombok.Getter;
import lombok.Setter;
/**
- * 媒体生产事件
+ * 生产媒体事件
*
* @author acgist
*/
@@ -21,10 +22,21 @@ public class MediaProduceEvent extends RoomEventAdapter {
* 生产者
*/
private final Producer producer;
+ /**
+ * 消费者
+ */
+ private final ClientWrapper clientWrapper;
public MediaProduceEvent(Room room, Producer producer) {
super(room);
this.producer = producer;
+ this.clientWrapper = null;
}
-
+
+ public MediaProduceEvent(Room room, ClientWrapper clientWrapper) {
+ super(room);
+ this.producer = null;
+ this.clientWrapper = clientWrapper;
+ }
+
}
diff --git a/taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/event/RoomClientListEvent.java b/taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/event/RoomEnterEvent.java
similarity index 73%
rename from taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/event/RoomClientListEvent.java
rename to taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/event/RoomEnterEvent.java
index 56640ca..b88c7e8 100644
--- a/taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/event/RoomClientListEvent.java
+++ b/taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/event/RoomEnterEvent.java
@@ -7,13 +7,13 @@ import lombok.Getter;
import lombok.Setter;
/**
- * 房间终端列表事件
+ * 进入房间事件
*
* @author acgist
*/
@Getter
@Setter
-public class RoomClientListEvent extends RoomEventAdapter {
+public class RoomEnterEvent extends RoomEventAdapter {
private static final long serialVersionUID = 1L;
@@ -22,7 +22,7 @@ public class RoomClientListEvent extends RoomEventAdapter {
*/
private final Client client;
- public RoomClientListEvent(Room room, Client client) {
+ public RoomEnterEvent(Room room, Client client) {
super(room);
this.client = client;
}
diff --git a/taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/party/media/ClientWrapper.java b/taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/party/media/ClientWrapper.java
index 9f70ae9..4aef186 100644
--- a/taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/party/media/ClientWrapper.java
+++ b/taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/party/media/ClientWrapper.java
@@ -96,10 +96,18 @@ public class ClientWrapper implements AutoCloseable {
* 生产者
*/
private final Map producers;
+ /**
+ * 消费者
+ */
+ private final Map consumers;
/**
* 数据通道生产者
*/
private final Map dataProducers;
+ /**
+ * 数据通道消费者
+ */
+ private final Map dataConsumers;
public ClientWrapper(Room room, Client client) {
this.room = room;
@@ -107,7 +115,9 @@ public class ClientWrapper implements AutoCloseable {
this.roomId = room.getRoomId();
this.clientId = client.clientId();
this.producers = new ConcurrentHashMap<>();
+ this.consumers = new ConcurrentHashMap<>();
this.dataProducers = new ConcurrentHashMap<>();
+ this.dataConsumers = new ConcurrentHashMap<>();
}
/**
@@ -128,18 +138,32 @@ public class ClientWrapper implements AutoCloseable {
}
/**
- * 是否已经消费
+ * @param producer 生产者
*
- * @param producer
- * @return
+ * @return 是否已经消费
*/
public boolean consume(Producer producer) {
- return this.producers.values().stream()
- .anyMatch(v -> v.getConsumers().values().stream().anyMatch(c -> c.getProducer() == producer));
+ return this.consumers.values().stream()
+ .anyMatch(v -> v.getProducer() == producer);
}
-
+
+ /**
+ * 删除消费者
+ *
+ * @param wrapper 消费者终端保证期
+ */
+ public void remove(ClientWrapper wrapper) {
+ this.consumers.entrySet().stream()
+ .filter(v -> v.getValue().getConsumeClient() == wrapper)
+ .map(Map.Entry::getKey)
+ .forEach(this.consumers::remove);
+ // TODO:资源释放
+ this.producers.values().forEach(v -> v.remove(wrapper));
+ }
+
@Override
public void close() throws Exception {
+ // TODO:释放资源
}
}
diff --git a/taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/party/media/Producer.java b/taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/party/media/Producer.java
index 5bb9ade..1d0fbf3 100644
--- a/taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/party/media/Producer.java
+++ b/taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/party/media/Producer.java
@@ -44,4 +44,17 @@ public class Producer {
this.consumers = new ConcurrentHashMap<>();
}
+ /**
+ * 删除消费者
+ *
+ * @param consumer 消费者
+ */
+ public void remove(ClientWrapper consumer) {
+ this.consumers.entrySet().stream()
+ .filter(v -> v.getValue().getConsumeClient() == consumer)
+ .map(Map.Entry::getKey)
+ .forEach(this.consumers::remove);
+ // TODO:资源释放
+ }
+
}
diff --git a/taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/party/media/Room.java b/taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/party/media/Room.java
index 1d10c6f..a522c9d 100644
--- a/taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/party/media/Room.java
+++ b/taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/party/media/Room.java
@@ -6,9 +6,12 @@ import java.util.Map;
import java.util.Objects;
import java.util.concurrent.ConcurrentHashMap;
+import org.springframework.context.ApplicationContext;
+
import com.acgist.taoyao.boot.model.Message;
import com.acgist.taoyao.signal.client.Client;
import com.acgist.taoyao.signal.client.ClientStatus;
+import com.acgist.taoyao.signal.event.RoomLeaveEvent;
import lombok.Getter;
import lombok.Setter;
@@ -37,11 +40,19 @@ public class Room implements Closeable {
/**
* 状态
*/
- private RoomStatus roomStatus;
+ private final RoomStatus roomStatus;
/**
* 媒体服务
*/
private Client mediaClient;
+ /**
+ * 房间管理
+ */
+ private final RoomManager roomManager;
+ /**
+ * 系统上下文
+ */
+ private final ApplicationContext applicationContext;
/**
* 终端
*/
@@ -50,9 +61,11 @@ public class Room implements Closeable {
/**
* @param mediaClient 媒体服务
*/
- public Room(Client mediaClient) {
+ public Room(Client mediaClient, RoomManager roomManager, ApplicationContext applicationContext) {
this.roomStatus = new RoomStatus();
this.mediaClient = mediaClient;
+ this.roomManager = roomManager;
+ this.applicationContext = applicationContext;
this.clients = new ConcurrentHashMap<>();
}
@@ -96,13 +109,18 @@ public class Room implements Closeable {
synchronized (this.clients) {
final ClientWrapper wrapper = this.clients.remove(client);
if(wrapper != null) {
+ this.roomStatus.setClientSize(this.roomStatus.getClientSize() - 1);
+ // 删除消费者
+ this.clients.values().stream()
+ .filter(v -> v != wrapper)
+ .forEach(v -> v.remove(wrapper));
+ // TODO:删除数据消费者
+ this.applicationContext.publishEvent(new RoomLeaveEvent(this, client));
try {
wrapper.close();
} catch (Exception e) {
log.error("终端关闭异常", e);
}
- this.roomStatus.setClientSize(this.roomStatus.getClientSize() - 1);
- // TODO:leave事件
}
}
}
@@ -198,6 +216,8 @@ public class Room implements Closeable {
public void close() {
log.info("关闭房间:{}", this.roomId);
// TODO:关闭房间
+ // TODO:媒体服务
+ this.roomManager.remove(this);
}
}
diff --git a/taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/party/media/RoomManager.java b/taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/party/media/RoomManager.java
index 044f629..cfa7192 100644
--- a/taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/party/media/RoomManager.java
+++ b/taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/party/media/RoomManager.java
@@ -5,6 +5,8 @@ import java.util.Map;
import java.util.Objects;
import java.util.concurrent.CopyOnWriteArrayList;
+import org.springframework.context.ApplicationContext;
+
import com.acgist.taoyao.boot.annotation.Manager;
import com.acgist.taoyao.boot.config.Constant;
import com.acgist.taoyao.boot.model.Message;
@@ -26,15 +28,17 @@ public class RoomManager {
private final IdService idService;
private final ClientManager clientManager;
+ private final ApplicationContext applicationContext;
/**
* 房间列表
*/
private final List rooms;
- public RoomManager(IdService idService, ClientManager clientManager) {
+ public RoomManager(IdService idService, ClientManager clientManager, ApplicationContext applicationContext) {
this.idService = idService;
this.clientManager = clientManager;
+ this.applicationContext = applicationContext;
this.rooms = new CopyOnWriteArrayList<>();
}
@@ -117,7 +121,7 @@ public class RoomManager {
}
final String roomId = this.idService.buildUuid();
// 房间
- final Room room = new Room(mediaClient);
+ final Room room = new Room(mediaClient, this, this.applicationContext);
room.setRoomId(roomId);
room.setPassword(password);
// 状态
@@ -133,22 +137,6 @@ public class RoomManager {
this.rooms.add(room);
return room;
}
-
- /**
- * 关闭房间
- *
- * @param roomId 房间标识
- */
- public void close(String roomId) {
- final Room room = this.room(roomId);
- if(room == null) {
- log.warn("关闭房间无效:{}", roomId);
- return;
- }
- if(this.rooms.remove(room)) {
- // TODO:媒体服务
- }
- }
/**
* 离开房间
@@ -159,4 +147,13 @@ public class RoomManager {
this.rooms.forEach(v -> v.leave(client));
}
+ /**
+ * 删除房间
+ *
+ * @param room 房间
+ */
+ public void remove(Room room) {
+ this.rooms.remove(room);
+ }
+
}
diff --git a/taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaConsumeProtocol.java b/taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaConsumeProtocol.java
index f99fa77..f05f799 100644
--- a/taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaConsumeProtocol.java
+++ b/taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaConsumeProtocol.java
@@ -10,6 +10,7 @@ import com.acgist.taoyao.boot.annotation.Description;
import com.acgist.taoyao.boot.annotation.Protocol;
import com.acgist.taoyao.boot.config.Constant;
import com.acgist.taoyao.boot.model.Message;
+import com.acgist.taoyao.boot.model.MessageCodeException;
import com.acgist.taoyao.boot.utils.MapUtils;
import com.acgist.taoyao.signal.client.Client;
import com.acgist.taoyao.signal.client.ClientType;
@@ -31,9 +32,15 @@ import lombok.extern.slf4j.Slf4j;
@Slf4j
@Protocol
@Description(
+ memo = """
+ 消费媒体:主动消费、终端生成媒体、终端创建WebRTC消费通道
+ 终端生产媒体当前房间所有终端根据订阅类型自动消费媒体
+ 终端创建WebRTC消费通道根据订阅类型自动消费当前房间已有媒体
+ """,
flow = {
- "信令服务->媒体服务=>信令服务=>终端->信令服务->信令服务",
- "终端->信令服务->媒体服务=>信令服务=>终端->信令服务->信令服务"
+ "终端-[生产媒体]>信令服务-[其他终端消费])信令服务",
+ "终端-[创建WebRTC消费通道]>信令服务-[消费其他终端])信令服务",
+ "终端->信令服务->媒体服务=>信令服务->终端->信令服务->媒体服务"
}
)
public class MediaConsumeProtocol extends ProtocolRoomAdapter implements ApplicationListener {
@@ -48,13 +55,25 @@ public class MediaConsumeProtocol extends ProtocolRoomAdapter implements Applica
@Override
public void onApplicationEvent(MediaProduceEvent event) {
final Room room = event.getRoom();
- final Producer producer = event.getProducer();
- final ClientWrapper clientWrapper = producer.getProduceClient();
- final Client client = clientWrapper.getClient();
- room.getClients().values().stream()
- .filter(v -> v.getClient() != client)
- .filter(v -> v.getSubscribeType().consume(producer))
- .forEach(v -> this.consume(room, v, producer));
+ if(event.getProducer() != null) {
+ // 生产媒体:其他终端消费
+ final Producer producer = event.getProducer();
+ final ClientWrapper produceClientWrapper = producer.getProduceClient();
+ room.getClients().values().stream()
+ .filter(v -> v != produceClientWrapper)
+ .filter(v -> v.getSubscribeType().consume(producer))
+ .forEach(v -> this.consume(room, v, producer));
+ } else if(event.getClientWrapper() != null) {
+ // 创建WebRTC消费通道:消费其他终端
+ final ClientWrapper consumeClientWrapper = event.getClientWrapper();
+ room.getClients().values().stream()
+ .filter(v -> v != consumeClientWrapper)
+ .flatMap(v -> v.getProducers().values().stream())
+ .filter(v -> consumeClientWrapper.getSubscribeType().consume(v))
+ .forEach(producer -> this.consume(room, consumeClientWrapper, producer));
+ } else {
+ throw MessageCodeException.of("消费媒体失败");
+ }
}
@Override
@@ -62,51 +81,55 @@ public class MediaConsumeProtocol extends ProtocolRoomAdapter implements Applica
final String producerId = MapUtils.get(body, Constant.PRODUCER_ID);
final Producer producer = room.producer(producerId);
if(clientType == ClientType.WEB || clientType == ClientType.CAMERA) {
- // 请求消费
+ // 请求消费媒体
this.consume(room, room.clientWrapper(client), producer);
} else if(clientType == ClientType.MEDIA) {
- // 等待消费者准备完成
+ // 通知终端准备:准备完成再次请求消费媒体结束媒体服务等待
final String kind = MapUtils.get(body, Constant.KIND);
final String streamId = MapUtils.get(body, Constant.STREAM_ID);
final String consumerId = MapUtils.get(body, Constant.CONSUMER_ID);
final String consumeClientId = MapUtils.get(body, Constant.CLIENT_ID);
final ClientWrapper consumeClientWrapper = room.clientWrapper(consumeClientId);
- final Map consumers = producer.getConsumers();
- final Consumer consumer = consumers.get(producerId);
- if(consumer != null) {
+ final Map consumers = consumeClientWrapper.getConsumers();
+ final Map producerConsumers = producer.getConsumers();
+ final Consumer consumer = new Consumer(consumeClientWrapper, producer, kind, streamId, consumerId);
+ final Consumer oldConsumer = consumers.put(producerId, consumer);
+ final Consumer oldProducerConsumer = producerConsumers.put(consumerId, consumer);
+ if(oldConsumer != null || oldProducerConsumer != null) {
log.warn("消费者已经存在:{}", consumerId);
- // TODO:关闭旧的
-// consumer.close();
+ // TODO:关闭旧的?
}
final Client consumeClient = consumeClientWrapper.getClient();
- consumers.put(consumerId, new Consumer(consumeClientWrapper, producer, kind, streamId, consumerId));
consumeClient.push(message);
} else {
- // TODO:log
+ this.logNoAdapter(clientType);
}
}
/**
* 消费媒体
*
- * @param room
- * @param consumeClient
- * @param producer
+ * @param room 房间
+ * @param consumeClientWrapper 消费者终端包装器
+ * @param producer 生产者
*/
private void consume(Room room, ClientWrapper consumeClientWrapper, Producer producer) {
- // TODO:掉线删除
- if(producer.getProduceClient().consume(producer)) {
- log.debug("已经消费:{}", consumeClientWrapper.getClientId());
+ if(consumeClientWrapper.consume(producer)) {
+ // TODO:回调媒体服务准备完成
+ if(log.isDebugEnabled()) {
+ log.debug("已经消费:{}", consumeClientWrapper.getClientId(), producer.getStreamId());
+ }
return;
}
- final Client mediaClient = room.getMediaClient();
- final Transport recvTransport = consumeClientWrapper.getRecvTransport();
- final Map body = new HashMap<>();
final String clientId = consumeClientWrapper.getClientId();
final String streamId = producer.getStreamId() + "->" + clientId;
+ final Client mediaClient = room.getMediaClient();
+ final Transport recvTransport = consumeClientWrapper.getRecvTransport();
+ final ClientWrapper produceClientWrapper = producer.getProduceClient();
+ final Map body = new HashMap<>();
body.put(Constant.ROOM_ID, room.getRoomId());
body.put(Constant.CLIENT_ID, clientId);
- body.put(Constant.SOURCE_ID, producer.getProduceClient().getClientId());
+ body.put(Constant.SOURCE_ID, produceClientWrapper.getClientId());
body.put(Constant.STREAM_ID, streamId);
body.put(Constant.PRODUCER_ID, producer.getProducerId());
body.put(Constant.TRANSPORT_ID, recvTransport.getTransportId());
diff --git a/taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaTransportWebRtcCreateProtocol.java b/taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaTransportWebRtcCreateProtocol.java
index 1c671bf..887c6f6 100644
--- a/taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaTransportWebRtcCreateProtocol.java
+++ b/taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaTransportWebRtcCreateProtocol.java
@@ -75,7 +75,7 @@ public class MediaTransportWebRtcCreateProtocol extends ProtocolRoomAdapter {
}
// 拷贝属性
recvTransport.copy(responseBody);
- this.produce(room, clientWrapper);
+ this.publishEvent(new MediaProduceEvent(room, clientWrapper));
}
// 生产者
final Boolean producing = MapUtils.getBoolean(body, Constant.PRODUCING);
@@ -114,17 +114,4 @@ public class MediaTransportWebRtcCreateProtocol extends ProtocolRoomAdapter {
});
}
- /**
- * 生产数据
- *
- * @param room
- * @param clientWrapper
- */
- private void produce(Room room, ClientWrapper clientWrapper) {
- room.getClients().values().stream()
- .filter(v -> v != clientWrapper)
- .flatMap(v -> v.getProducers().values().stream())
- .forEach(producer -> this.publishEvent(new MediaProduceEvent(room, producer)));
- }
-
}
diff --git a/taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/room/RoomClientListProtocol.java b/taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/room/RoomClientListProtocol.java
index 33fae99..541ad2a 100644
--- a/taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/room/RoomClientListProtocol.java
+++ b/taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/room/RoomClientListProtocol.java
@@ -10,7 +10,7 @@ import com.acgist.taoyao.boot.annotation.Protocol;
import com.acgist.taoyao.boot.model.Message;
import com.acgist.taoyao.signal.client.Client;
import com.acgist.taoyao.signal.client.ClientType;
-import com.acgist.taoyao.signal.event.RoomClientListEvent;
+import com.acgist.taoyao.signal.event.RoomEnterEvent;
import com.acgist.taoyao.signal.party.media.Room;
import com.acgist.taoyao.signal.protocol.ProtocolRoomAdapter;
@@ -53,7 +53,7 @@ import com.acgist.taoyao.signal.protocol.ProtocolRoomAdapter;
},
flow = "终端=>信令服务->终端"
)
-public class RoomClientListProtocol extends ProtocolRoomAdapter implements ApplicationListener {
+public class RoomClientListProtocol extends ProtocolRoomAdapter implements ApplicationListener {
public static final String SIGNAL = "room::client::list";
@@ -63,7 +63,7 @@ public class RoomClientListProtocol extends ProtocolRoomAdapter implements Appli
@Async
@Override
- public void onApplicationEvent(RoomClientListEvent event) {
+ public void onApplicationEvent(RoomEnterEvent event) {
final Room room = event.getRoom();
final Client client = event.getClient();
client.push(this.build(room.clientStatus()));
diff --git a/taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/room/RoomCloseProtocol.java b/taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/room/RoomCloseProtocol.java
index f56f56d..d7332b3 100644
--- a/taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/room/RoomCloseProtocol.java
+++ b/taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/room/RoomCloseProtocol.java
@@ -40,7 +40,6 @@ public class RoomCloseProtocol extends ProtocolRoomAdapter {
} else if(clientType == ClientType.MEDIA) {
room.close();
room.broadcast(message);
- // TODO:移除
} else {
this.logNoAdapter(clientType);
}
diff --git a/taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/room/RoomEnterProtocol.java b/taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/room/RoomEnterProtocol.java
index 6e7261a..b80756e 100644
--- a/taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/room/RoomEnterProtocol.java
+++ b/taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/room/RoomEnterProtocol.java
@@ -13,7 +13,7 @@ import com.acgist.taoyao.boot.model.MessageCodeException;
import com.acgist.taoyao.boot.utils.MapUtils;
import com.acgist.taoyao.signal.client.Client;
import com.acgist.taoyao.signal.client.ClientType;
-import com.acgist.taoyao.signal.event.RoomClientListEvent;
+import com.acgist.taoyao.signal.event.RoomEnterEvent;
import com.acgist.taoyao.signal.party.media.ClientWrapper;
import com.acgist.taoyao.signal.party.media.ClientWrapper.SubscribeType;
import com.acgist.taoyao.signal.party.media.Room;
@@ -90,8 +90,8 @@ public class RoomEnterProtocol extends ProtocolRoomAdapter {
Constant.STATUS, client.status()
));
room.broadcast(message);
- // 房间终端列表事件
- this.publishEvent(new RoomClientListEvent(room, client));
+ // 进入房间事件
+ this.publishEvent(new RoomEnterEvent(room, client));
}
}