[*] 日常优化

This commit is contained in:
acgist
2023-08-10 07:39:56 +08:00
parent d8f6b4b5af
commit 6336bb4767
4 changed files with 70 additions and 47 deletions

View File

@@ -24,9 +24,14 @@ import lombok.extern.slf4j.Slf4j;
@Description(
body = {
"""
{
"roomId" : "房间ID",
"transportId" : "通道ID"
"dtlsParameters": "DTLS参数"
}
"""
},
flow = "终端->信令服务->媒体服务->信令服务->终端"
flow = "终端=>信令服务->媒体服务"
)
public class MediaTransportWebRtcConnectProtocol extends ProtocolRoomAdapter {
@@ -45,7 +50,7 @@ public class MediaTransportWebRtcConnectProtocol extends ProtocolRoomAdapter {
final String transportId = MapUtils.get(responseBody, Constant.TRANSPORT_ID);
log.info("{}连接WebRTC通道信令{}", clientId, transportId);
} else {
// 忽略其他情况
this.logNoAdapter(clientType);
}
}

View File

@@ -34,19 +34,23 @@ import lombok.extern.slf4j.Slf4j;
body = {
"""
{
"roomId": "房间标识"
"roomId" : "房间标识",
"forceTcp" : "强制使用TCP",
"producing" : "是否生产",
"consuming" : "是否消费",
"sctpCapabilities": "sctpCapabilities"
}
{
"roomId": "房间标识",
"transportId": "传输通道标识",
"iceCandidates": "iceCandidates",
"iceParameters": "iceParameters",
"roomId" : "房间标识",
"transportId" : "传输通道标识",
"iceCandidates" : "iceCandidates",
"iceParameters" : "iceParameters",
"dtlsParameters": "dtlsParameters",
"sctpParameters": "sctpParameters"
}
"""
},
flow = "终端->信令服务->媒体服务->信令服务->终端"
flow = "终端=>信令服务->媒体服务"
)
public class MediaTransportWebRtcCreateProtocol extends ProtocolRoomAdapter {
@@ -58,47 +62,51 @@ public class MediaTransportWebRtcCreateProtocol extends ProtocolRoomAdapter {
@Override
public void execute(String clientId, ClientType clientType, Room room, Client client, Client mediaClient, Message message, Map<String, Object> body) {
body.put(Constant.CLIENT_ID, clientId);
final Message response = room.requestMedia(message);
final Map<String, Object> responseBody = response.body();
final Map<String, Transport> transports = room.getTransports();
final String transportId = MapUtils.get(responseBody, Constant.TRANSPORT_ID);
// 重写地址
this.rewriteIp(client.getIP(), responseBody);
// 处理逻辑
final ClientWrapper clientWrapper = room.clientWrapper(client);
// 消费者
final Boolean consuming = MapUtils.getBoolean(body, Constant.CONSUMING);
if(Boolean.TRUE.equals(consuming)) {
Transport recvTransport = clientWrapper.getRecvTransport();
if(recvTransport == null) {
recvTransport = new Transport(transportId, Direction.RECV, room, client);
transports.put(transportId, recvTransport);
} else {
log.warn("接收通道已经存在:{}", transportId);
if(clientType.mediaClient()) {
body.put(Constant.CLIENT_ID, clientId);
final Message response = room.requestMedia(message);
final Map<String, Object> responseBody = response.body();
final Map<String, Transport> transports = room.getTransports();
final String transportId = MapUtils.get(responseBody, Constant.TRANSPORT_ID);
// 重写地址
this.rewriteIp(client.getIP(), responseBody);
// 处理逻辑
final ClientWrapper clientWrapper = room.clientWrapper(client);
// 消费者
final Boolean consuming = MapUtils.getBoolean(body, Constant.CONSUMING);
if(Boolean.TRUE.equals(consuming)) {
Transport recvTransport = clientWrapper.getRecvTransport();
if(recvTransport == null) {
recvTransport = new Transport(transportId, Direction.RECV, room, client);
transports.put(transportId, recvTransport);
} else {
log.warn("接收通道已经存在:{}", transportId);
}
clientWrapper.setRecvTransport(recvTransport);
// 拷贝属性
recvTransport.copy(responseBody);
// 消费媒体:不能在连接时调用
this.publishEvent(new MediaConsumeEvent(room, clientWrapper));
}
clientWrapper.setRecvTransport(recvTransport);
// 拷贝属性
recvTransport.copy(responseBody);
// 消费媒体:不能在连接时调用
this.publishEvent(new MediaConsumeEvent(room, clientWrapper));
}
// 生产者
final Boolean producing = MapUtils.getBoolean(body, Constant.PRODUCING);
if(Boolean.TRUE.equals(producing)) {
Transport sendTransport = clientWrapper.getSendTransport();
if(sendTransport == null) {
sendTransport = new Transport(transportId, Direction.SEND, room, client);
transports.put(transportId, sendTransport);
} else {
log.warn("发送通道已经存在:{}", transportId);
// 生产者
final Boolean producing = MapUtils.getBoolean(body, Constant.PRODUCING);
if(Boolean.TRUE.equals(producing)) {
Transport sendTransport = clientWrapper.getSendTransport();
if(sendTransport == null) {
sendTransport = new Transport(transportId, Direction.SEND, room, client);
transports.put(transportId, sendTransport);
} else {
log.warn("发送通道已经存在:{}", transportId);
}
clientWrapper.setSendTransport(sendTransport);
// 拷贝属性
sendTransport.copy(responseBody);
}
clientWrapper.setSendTransport(sendTransport);
// 拷贝属性
sendTransport.copy(responseBody);
client.push(response);
log.info("{}创建WebRTC通道信令{}", clientId, transportId);
} else {
this.logNoAdapter(clientType);
}
client.push(response);
log.info("{}创建WebRTC通道信令{}", clientId, transportId);
}
/**

View File

@@ -18,6 +18,12 @@ import com.acgist.taoyao.signal.protocol.ProtocolRoomAdapter;
@Protocol
@Description(
body = """
{
"roomId" : "房间ID",
"camera" : "是否摄像头",
"flip" : "是否翻转",
"rotation": "旋转角度"
}
""",
flow = "媒体服务->信令服务->终端"
)