[*] 流程

This commit is contained in:
acgist
2023-04-09 14:33:08 +08:00
parent 46f21e3a43
commit 124b161644
19 changed files with 477 additions and 162 deletions

View File

@@ -27,11 +27,26 @@ public class Session implements Closeable {
* 接收者
*/
private final Client target;
/**
* P2P会话管理器
*/
private final SessionManager sessionManager;
public Session(String id, Client source, Client target) {
public Session(String id, Client source, Client target, SessionManager sessionManager) {
this.id = id;
this.source = source;
this.target = target;
this.sessionManager = sessionManager;
}
/**
* 推送消息
*
* @param message 消息
*/
public void push(Message message) {
this.source.push(message);
this.target.push(message);
}
/**
@@ -40,7 +55,7 @@ public class Session implements Closeable {
* @param clientId 当前终端ID
* @param message 消息
*/
public void pushRemote(String clientId, Message message) {
public void pushOther(String clientId, Message message) {
if(this.source.clientId().equals(clientId)) {
this.target.push(message);
} else {
@@ -50,7 +65,7 @@ public class Session implements Closeable {
@Override
public void close() {
this.sessionManager.remove(this.id);
}

View File

@@ -30,7 +30,7 @@ public class SessionManager {
* @return 会话
*/
public Session call(Client source, Client target) {
final Session session = new Session(this.idService.buildUuid(), source, target);
final Session session = new Session(this.idService.buildUuid(), source, target, this);
this.sessions.put(session.getId(), session);
return session;
}
@@ -44,4 +44,13 @@ public class SessionManager {
return this.sessions.get(sessionId);
}
/**
* @param sessionId 会话ID
*
* @return 会话
*/
public Session remove(String sessionId) {
return this.sessions.remove(sessionId);
}
}

View File

@@ -45,7 +45,10 @@ public class RoomLeaveProtocol extends ProtocolRoomAdapter implements Applicatio
public void onApplicationEvent(RoomLeaveEvent event) {
final Room room = event.getRoom();
final Client client = event.getClient();
final Map<String, String> body = Map.of(Constant.CLIENT_ID, client.clientId());
final Map<String, String> body = Map.of(
Constant.ROOM_ID, room.getRoomId(),
Constant.CLIENT_ID, client.clientId()
);
room.broadcast(client, this.build(body));
}

View File

@@ -21,7 +21,7 @@ import com.acgist.taoyao.signal.protocol.ProtocolSessionAdapter;
{
}
""",
flow = "终端->信令服务->终端"
flow = "终端->信令服务+)终端"
)
public class SessionCloseProtocol extends ProtocolSessionAdapter {
@@ -33,6 +33,8 @@ public class SessionCloseProtocol extends ProtocolSessionAdapter {
@Override
public void execute(String clientId, ClientType clientType, Session session, Client client, Message message, Map<String, Object> body) {
session.push(message);
session.close();
}
}

View File

@@ -34,7 +34,7 @@ public class SessionExchangeProtocol extends ProtocolSessionAdapter {
@Override
public void execute(String clientId, ClientType clientType, Session session, Client client, Message message, Map<String, Object> body) {
session.pushRemote(clientId, message);
session.pushOther(clientId, message);
}
}

View File

@@ -35,7 +35,7 @@ public class SessionPauseProtocol extends ProtocolSessionAdapter {
@Override
public void execute(String clientId, ClientType clientType, Session session, Client client, Message message, Map<String, Object> body) {
session.pushRemote(clientId, message);
session.pushOther(clientId, message);
}
}

View File

@@ -35,7 +35,7 @@ public class SessionResumeProtocol extends ProtocolSessionAdapter {
@Override
public void execute(String clientId, ClientType clientType, Session session, Client client, Message message, Map<String, Object> body) {
session.pushRemote(clientId, message);
session.pushOther(clientId, message);
}
}