[*] 日常优化
This commit is contained in:
@@ -1693,7 +1693,11 @@ class Taoyao {
|
|||||||
* @param {*} body 消息主体
|
* @param {*} body 消息主体
|
||||||
*/
|
*/
|
||||||
async mediaTransportWebrtcConnect(message, body) {
|
async mediaTransportWebrtcConnect(message, body) {
|
||||||
const { roomId, transportId, dtlsParameters } = body;
|
const {
|
||||||
|
roomId,
|
||||||
|
transportId,
|
||||||
|
dtlsParameters
|
||||||
|
} = body;
|
||||||
const room = this.rooms.get(roomId);
|
const room = this.rooms.get(roomId);
|
||||||
const transport = room?.transports.get(transportId);
|
const transport = room?.transports.get(transportId);
|
||||||
if(transport) {
|
if(transport) {
|
||||||
|
|||||||
@@ -24,9 +24,14 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
@Description(
|
@Description(
|
||||||
body = {
|
body = {
|
||||||
"""
|
"""
|
||||||
|
{
|
||||||
|
"roomId" : "房间ID",
|
||||||
|
"transportId" : "通道ID"
|
||||||
|
"dtlsParameters": "DTLS参数"
|
||||||
|
}
|
||||||
"""
|
"""
|
||||||
},
|
},
|
||||||
flow = "终端->信令服务->媒体服务->信令服务->终端"
|
flow = "终端=>信令服务->媒体服务"
|
||||||
)
|
)
|
||||||
public class MediaTransportWebRtcConnectProtocol extends ProtocolRoomAdapter {
|
public class MediaTransportWebRtcConnectProtocol extends ProtocolRoomAdapter {
|
||||||
|
|
||||||
@@ -45,7 +50,7 @@ public class MediaTransportWebRtcConnectProtocol extends ProtocolRoomAdapter {
|
|||||||
final String transportId = MapUtils.get(responseBody, Constant.TRANSPORT_ID);
|
final String transportId = MapUtils.get(responseBody, Constant.TRANSPORT_ID);
|
||||||
log.info("{}连接WebRTC通道信令:{}", clientId, transportId);
|
log.info("{}连接WebRTC通道信令:{}", clientId, transportId);
|
||||||
} else {
|
} else {
|
||||||
// 忽略其他情况
|
this.logNoAdapter(clientType);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -34,19 +34,23 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
body = {
|
body = {
|
||||||
"""
|
"""
|
||||||
{
|
{
|
||||||
"roomId": "房间标识"
|
"roomId" : "房间标识",
|
||||||
|
"forceTcp" : "强制使用TCP",
|
||||||
|
"producing" : "是否生产",
|
||||||
|
"consuming" : "是否消费",
|
||||||
|
"sctpCapabilities": "sctpCapabilities"
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
"roomId": "房间标识",
|
"roomId" : "房间标识",
|
||||||
"transportId": "传输通道标识",
|
"transportId" : "传输通道标识",
|
||||||
"iceCandidates": "iceCandidates",
|
"iceCandidates" : "iceCandidates",
|
||||||
"iceParameters": "iceParameters",
|
"iceParameters" : "iceParameters",
|
||||||
"dtlsParameters": "dtlsParameters",
|
"dtlsParameters": "dtlsParameters",
|
||||||
"sctpParameters": "sctpParameters"
|
"sctpParameters": "sctpParameters"
|
||||||
}
|
}
|
||||||
"""
|
"""
|
||||||
},
|
},
|
||||||
flow = "终端->信令服务->媒体服务->信令服务->终端"
|
flow = "终端=>信令服务->媒体服务"
|
||||||
)
|
)
|
||||||
public class MediaTransportWebRtcCreateProtocol extends ProtocolRoomAdapter {
|
public class MediaTransportWebRtcCreateProtocol extends ProtocolRoomAdapter {
|
||||||
|
|
||||||
@@ -58,47 +62,51 @@ public class MediaTransportWebRtcCreateProtocol extends ProtocolRoomAdapter {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void execute(String clientId, ClientType clientType, Room room, Client client, Client mediaClient, Message message, Map<String, Object> body) {
|
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);
|
if(clientType.mediaClient()) {
|
||||||
final Message response = room.requestMedia(message);
|
body.put(Constant.CLIENT_ID, clientId);
|
||||||
final Map<String, Object> responseBody = response.body();
|
final Message response = room.requestMedia(message);
|
||||||
final Map<String, Transport> transports = room.getTransports();
|
final Map<String, Object> responseBody = response.body();
|
||||||
final String transportId = MapUtils.get(responseBody, Constant.TRANSPORT_ID);
|
final Map<String, Transport> transports = room.getTransports();
|
||||||
// 重写地址
|
final String transportId = MapUtils.get(responseBody, Constant.TRANSPORT_ID);
|
||||||
this.rewriteIp(client.getIP(), responseBody);
|
// 重写地址
|
||||||
// 处理逻辑
|
this.rewriteIp(client.getIP(), responseBody);
|
||||||
final ClientWrapper clientWrapper = room.clientWrapper(client);
|
// 处理逻辑
|
||||||
// 消费者
|
final ClientWrapper clientWrapper = room.clientWrapper(client);
|
||||||
final Boolean consuming = MapUtils.getBoolean(body, Constant.CONSUMING);
|
// 消费者
|
||||||
if(Boolean.TRUE.equals(consuming)) {
|
final Boolean consuming = MapUtils.getBoolean(body, Constant.CONSUMING);
|
||||||
Transport recvTransport = clientWrapper.getRecvTransport();
|
if(Boolean.TRUE.equals(consuming)) {
|
||||||
if(recvTransport == null) {
|
Transport recvTransport = clientWrapper.getRecvTransport();
|
||||||
recvTransport = new Transport(transportId, Direction.RECV, room, client);
|
if(recvTransport == null) {
|
||||||
transports.put(transportId, recvTransport);
|
recvTransport = new Transport(transportId, Direction.RECV, room, client);
|
||||||
} else {
|
transports.put(transportId, recvTransport);
|
||||||
log.warn("接收通道已经存在:{}", transportId);
|
} else {
|
||||||
|
log.warn("接收通道已经存在:{}", transportId);
|
||||||
|
}
|
||||||
|
clientWrapper.setRecvTransport(recvTransport);
|
||||||
|
// 拷贝属性
|
||||||
|
recvTransport.copy(responseBody);
|
||||||
|
// 消费媒体:不能在连接时调用
|
||||||
|
this.publishEvent(new MediaConsumeEvent(room, clientWrapper));
|
||||||
}
|
}
|
||||||
clientWrapper.setRecvTransport(recvTransport);
|
// 生产者
|
||||||
// 拷贝属性
|
final Boolean producing = MapUtils.getBoolean(body, Constant.PRODUCING);
|
||||||
recvTransport.copy(responseBody);
|
if(Boolean.TRUE.equals(producing)) {
|
||||||
// 消费媒体:不能在连接时调用
|
Transport sendTransport = clientWrapper.getSendTransport();
|
||||||
this.publishEvent(new MediaConsumeEvent(room, clientWrapper));
|
if(sendTransport == null) {
|
||||||
}
|
sendTransport = new Transport(transportId, Direction.SEND, room, client);
|
||||||
// 生产者
|
transports.put(transportId, sendTransport);
|
||||||
final Boolean producing = MapUtils.getBoolean(body, Constant.PRODUCING);
|
} else {
|
||||||
if(Boolean.TRUE.equals(producing)) {
|
log.warn("发送通道已经存在:{}", transportId);
|
||||||
Transport sendTransport = clientWrapper.getSendTransport();
|
}
|
||||||
if(sendTransport == null) {
|
clientWrapper.setSendTransport(sendTransport);
|
||||||
sendTransport = new Transport(transportId, Direction.SEND, room, client);
|
// 拷贝属性
|
||||||
transports.put(transportId, sendTransport);
|
sendTransport.copy(responseBody);
|
||||||
} else {
|
|
||||||
log.warn("发送通道已经存在:{}", transportId);
|
|
||||||
}
|
}
|
||||||
clientWrapper.setSendTransport(sendTransport);
|
client.push(response);
|
||||||
// 拷贝属性
|
log.info("{}创建WebRTC通道信令:{}", clientId, transportId);
|
||||||
sendTransport.copy(responseBody);
|
} else {
|
||||||
|
this.logNoAdapter(clientType);
|
||||||
}
|
}
|
||||||
client.push(response);
|
|
||||||
log.info("{}创建WebRTC通道信令:{}", clientId, transportId);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -18,6 +18,12 @@ import com.acgist.taoyao.signal.protocol.ProtocolRoomAdapter;
|
|||||||
@Protocol
|
@Protocol
|
||||||
@Description(
|
@Description(
|
||||||
body = """
|
body = """
|
||||||
|
{
|
||||||
|
"roomId" : "房间ID",
|
||||||
|
"camera" : "是否摄像头",
|
||||||
|
"flip" : "是否翻转",
|
||||||
|
"rotation": "旋转角度"
|
||||||
|
}
|
||||||
""",
|
""",
|
||||||
flow = "媒体服务->信令服务->终端"
|
flow = "媒体服务->信令服务->终端"
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user