From fd505dfbd2a83e6cba036e3770e310e4d76b9ef5 Mon Sep 17 00:00:00 2001 From: acgist <289547414@qq.com> Date: Sun, 19 Feb 2023 11:57:09 +0800 Subject: [PATCH] [+] media::transport::webrtc::connect --- docs/Deploy.md | 7 +- taoyao-client-web/README.md | 4 + taoyao-client-web/src/App.vue | 15 +- taoyao-client-web/src/components/Config.js | 77 +- .../src/components/LocalClient.vue | 3 +- taoyao-client-web/src/components/Logger.js | 94 -- .../src/components/SettingRoom.vue | 71 +- .../src/components/SettingSignal.vue | 38 +- taoyao-client-web/src/components/Taoyao.js | 653 +++++++++----- taoyao-client-web/src/taoyao.js | 832 ------------------ .../ecosystem.config.cluster.json | 14 + taoyao-media-server/ecosystem.config.json | 12 + taoyao-media-server/src/Logger.js | 93 -- taoyao-media-server/src/Server.js | 48 +- taoyao-media-server/src/Signal.js | 330 ++++--- .../taoyao/boot/annotation/Description.java | 39 + .../taoyao/boot/annotation/Protocol.java | 2 +- .../com/acgist/taoyao/boot/model/Header.java | 4 +- .../com/acgist/taoyao/boot/model/Message.java | 2 +- .../taoyao/boot/property}/Constant.java | 42 +- .../taoyao/boot/property/MediaProperties.java | 4 +- .../boot/property/MediaVideoProperties.java | 27 +- .../boot/property/WebrtcProperties.java | 27 + .../boot/property/WebrtcStunProperties.java | 2 +- .../boot/property/WebrtcTurnProperties.java | 2 +- .../taoyao/boot/utils/CloseableUtils.java | 8 +- .../src/main/resources/application-local.yml | 2 +- .../taoyao/signal/SocketSignalTest.java | 2 +- taoyao-signal-server/taoyao-signal/README.md | 389 +------- .../acgist/taoyao/signal/client/Client.java | 6 + .../taoyao/signal/client/ClientAdapter.java | 11 + .../taoyao/signal/client/ClientStatus.java | 6 +- .../signal/client/socket/SocketClient.java | 2 +- .../socket/SocketSignalMessageHandler.java | 2 +- .../client/websocket/WebSocketClient.java | 2 +- .../WebSocketSignalConfigurator.java | 2 +- .../signal/controller/ProtocolController.java | 103 +++ .../signal/controller/RoomController.java | 4 +- .../event/media/MediaRegisterEvent.java | 12 - .../taoyao/signal/media/MediaClient.java | 10 +- .../com/acgist/taoyao/signal/media/Peer.java | 16 +- .../com/acgist/taoyao/signal/media/Room.java | 4 +- .../taoyao/signal/media/RoomManager.java | 44 +- .../taoyao/signal/media/RoomStatus.java | 2 +- .../acgist/taoyao/signal/media/Transport.java | 50 +- .../signal/protocol/ProtocolRoomAdapter.java | 3 +- .../client/ClientBroadcastProtocol.java | 2 + .../protocol/client/ClientCloseProtocol.java | 8 +- .../protocol/client/ClientConfigProtocol.java | 13 +- .../client/ClientHeartbeatProtocol.java | 15 +- .../protocol/client/ClientListProtocol.java | 18 + .../client/ClientOfflineProtocol.java | 9 + .../protocol/client/ClientOnlineProtocol.java | 15 + .../protocol/client/ClientRebootProtocol.java | 4 + .../client/ClientRegisterProtocol.java | 19 +- .../protocol/client/ClientStatusProtocol.java | 24 +- .../client/ClientUnicastProtocol.java | 12 +- .../ConsumerSetPreferredLayersProtocol.java | 5 - .../media/ConsumerSetPriorityProtocol.java | 5 - .../protocol/media/IceRestartProtocol.java | 5 - ...a => MediaAudioActiveSpeakerProtocol.java} | 4 +- ...l.java => MediaConsumerCloseProtocol.java} | 2 +- ...a => MediaConsumerDataStatusProtocol.java} | 2 +- ...l.java => MediaConsumerPauseProtocol.java} | 2 +- .../MediaConsumerRequestKeyFrameProtocol.java | 5 + .../media/MediaConsumerResumeProtocol.java | 5 + ...diaConsumerSetPreferredLayersProtocol.java | 5 + .../MediaConsumerSetPriorityProtocol.java | 5 + .../media/MediaConsumerStatusProtocol.java | 5 + ...ocol.java => MediaIceRestartProtocol.java} | 2 +- .../protocol/media/MediaListProtocol.java | 16 + ...col.java => MediaProduceDataProtocol.java} | 2 +- ...rotocol.java => MediaProduceProtocol.java} | 2 +- ...l.java => MediaProducerCloseProtocol.java} | 2 +- .../MediaProducerDataStatusProtocol.java | 5 + .../media/MediaProducerPauseProtocol.java | 5 + .../media/MediaProducerResumeProtocol.java | 5 + .../media/MediaProducerScoreProtocol.java | 5 + .../media/MediaProducerStatusProtocol.java | 5 + .../protocol/media/MediaRebootProtocol.java | 2 + .../protocol/media/MediaRegisterProtocol.java | 19 +- ...> MediaRouterRtpCapabilitiesProtocol.java} | 25 +- .../media/MediaTransportStatusProtocol.java | 5 + ... MediaTransportWebRtcConnectProtocol.java} | 23 +- .../MediaTransportWebRtcCreateProtocol.java | 53 ++ .../MediaVideoOrientationChangeProtocol.java | 5 + .../protocol/media/ProduceDataProtocol.java | 5 - .../protocol/media/ProducerCloseProtocol.java | 5 - .../media/ProducerDataStatusProtocol.java | 5 - .../protocol/media/ProducerPauseProtocol.java | 5 - .../media/ProducerResumeProtocol.java | 5 - .../protocol/media/ProducerScoreProtocol.java | 5 - .../media/ProducerStatusProtocol.java | 5 - .../media/TransportStatusProtocol.java | 5 - .../media/TransportWebRtcConnectProtocol.java | 10 - .../media/VideoOrientationChangeProtocol.java | 5 - .../platform/PlatformErrorProtocol.java | 2 + .../platform/PlatformRebootProtocol.java | 2 + .../platform/PlatformScriptProtocol.java | 18 +- .../platform/PlatformShutdownProtocol.java | 2 + .../protocol/room/RoomCreateProtocol.java | 19 +- .../protocol/room/RoomEnterProtocol.java | 19 +- .../protocol/room/RoomListProtocol.java | 14 + .../protocol/system/SystemRebootProtocol.java | 2 + .../system/SystemShutdownProtocol.java | 2 + 105 files changed, 1511 insertions(+), 2116 deletions(-) delete mode 100644 taoyao-client-web/src/components/Logger.js delete mode 100644 taoyao-client-web/src/taoyao.js create mode 100644 taoyao-media-server/ecosystem.config.cluster.json create mode 100644 taoyao-media-server/ecosystem.config.json delete mode 100644 taoyao-media-server/src/Logger.js create mode 100644 taoyao-signal-server/taoyao-boot/src/main/java/com/acgist/taoyao/boot/annotation/Description.java rename taoyao-signal-server/{taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol => taoyao-boot/src/main/java/com/acgist/taoyao/boot/property}/Constant.java (70%) create mode 100644 taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/controller/ProtocolController.java delete mode 100644 taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/event/media/MediaRegisterEvent.java delete mode 100644 taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/ConsumerSetPreferredLayersProtocol.java delete mode 100644 taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/ConsumerSetPriorityProtocol.java delete mode 100644 taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/IceRestartProtocol.java rename taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/{AudioActiveSpeakerProtocol.java => MediaAudioActiveSpeakerProtocol.java} (87%) rename taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/{ConsumerDataStatusProtocol.java => MediaConsumerCloseProtocol.java} (55%) rename taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/{ConsumerRequestKeyFrameProtocol.java => MediaConsumerDataStatusProtocol.java} (53%) rename taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/{ConsumerPauseProtocol.java => MediaConsumerPauseProtocol.java} (55%) create mode 100644 taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaConsumerRequestKeyFrameProtocol.java create mode 100644 taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaConsumerResumeProtocol.java create mode 100644 taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaConsumerSetPreferredLayersProtocol.java create mode 100644 taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaConsumerSetPriorityProtocol.java create mode 100644 taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaConsumerStatusProtocol.java rename taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/{ConsumerCloseProtocol.java => MediaIceRestartProtocol.java} (57%) rename taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/{ConsumerStatusProtocol.java => MediaProduceDataProtocol.java} (56%) rename taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/{ProduceProtocol.java => MediaProduceProtocol.java} (59%) rename taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/{ConsumerResumeProtocol.java => MediaProducerCloseProtocol.java} (55%) create mode 100644 taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaProducerDataStatusProtocol.java create mode 100644 taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaProducerPauseProtocol.java create mode 100644 taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaProducerResumeProtocol.java create mode 100644 taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaProducerScoreProtocol.java create mode 100644 taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaProducerStatusProtocol.java rename taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/{RouterRtpCapabilitiesProtocol.java => MediaRouterRtpCapabilitiesProtocol.java} (54%) create mode 100644 taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaTransportStatusProtocol.java rename taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/{TransportWebRtcCreateProtocol.java => MediaTransportWebRtcConnectProtocol.java} (54%) create mode 100644 taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaTransportWebRtcCreateProtocol.java create mode 100644 taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaVideoOrientationChangeProtocol.java delete mode 100644 taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/ProduceDataProtocol.java delete mode 100644 taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/ProducerCloseProtocol.java delete mode 100644 taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/ProducerDataStatusProtocol.java delete mode 100644 taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/ProducerPauseProtocol.java delete mode 100644 taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/ProducerResumeProtocol.java delete mode 100644 taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/ProducerScoreProtocol.java delete mode 100644 taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/ProducerStatusProtocol.java delete mode 100644 taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/TransportStatusProtocol.java delete mode 100644 taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/TransportWebRtcConnectProtocol.java delete mode 100644 taoyao-signal-server/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/VideoOrientationChangeProtocol.java diff --git a/docs/Deploy.md b/docs/Deploy.md index 0517d67..cbbc69e 100644 --- a/docs/Deploy.md +++ b/docs/Deploy.md @@ -242,6 +242,11 @@ npm install pm2 start npm --name "taoyao-media-server" -- run dev | release pm2 save +# 配置ecosystem +pm2 ecosystem +pm2 start | reload ecosystem.config.json +pm2 save + # 管理服务 pm2 start | stop | restart taoyao-media-server ``` @@ -353,8 +358,6 @@ firewall-cmd --list-ports ## 证书 -正式环境建议关闭项目`SSL`配置,可以使用`Nginx`配置证书。 - ``` keytool -genkeypair -keyalg RSA -dname "CN=localhost, OU=acgist, O=taoyao, L=GZ, ST=GD, C=CN" -alias taoyao -validity 3650 -ext ku:c=dig,keyE -ext eku=serverAuth -ext SAN=dns:localhost,ip:127.0.0.1 -keystore taoyao.jks -keypass 123456 -storepass 123456 ``` diff --git a/taoyao-client-web/README.md b/taoyao-client-web/README.md index 8586219..81d5ec2 100644 --- a/taoyao-client-web/README.md +++ b/taoyao-client-web/README.md @@ -1,3 +1,7 @@ # Web终端 注意部分`API`需要`localhost`或者`https` + +## TODO + +按钮:选择房间、媒体服务、开关 diff --git a/taoyao-client-web/src/App.vue b/taoyao-client-web/src/App.vue index ce548ef..0aff1df 100644 --- a/taoyao-client-web/src/App.vue +++ b/taoyao-client-web/src/App.vue @@ -1,11 +1,10 @@ diff --git a/taoyao-client-web/src/components/Logger.js b/taoyao-client-web/src/components/Logger.js deleted file mode 100644 index ba5876a..0000000 --- a/taoyao-client-web/src/components/Logger.js +++ /dev/null @@ -1,94 +0,0 @@ -/** - * 日志 - */ -import moment from "moment"; -import { config } from "./Config.js"; - -/** - * 日志 - */ -class Logger { - constructor(prefix = "") { - if (prefix) { - this.name = this.name + " : " + prefix; - } - } - - // 名称 - name = config.name; - // 级别 - level = ["DEBUG", "INFO", "WARN", "ERROR", "OFF"]; - // 级别索引 - levelIndex = this.level.indexOf(config.logLevel.toUpperCase()); - - /** - * debug - * - * @param {...any} args 参数 - * - * @returns this - */ - debug(...args) { - return this.log(console.debug, "37m", "DEBUG", args); - } - - /** - * info - * - * @param {...any} args 参数 - * - * @returns this - */ - info(...args) { - return this.log(console.info, "32m", "INFO", args); - } - - /** - * warn - * - * @param {...any} args 参数 - * - * @returns this - */ - warn(...args) { - return this.log(console.warn, "33m", "WARN", args); - } - - /** - * error - * - * @param {...any} args 参数 - * - * @returns this - */ - error(...args) { - return this.log(console.error, "31m", "ERROR", args); - } - - /** - * 日志 - * - * @param {*} out 输出 - * @param {*} color 颜色 - * @param {*} level 级别 - * @param {*} args 参数 - * - * @returns this - */ - log(out, color, level, args) { - if (!args || this.level.indexOf(level) < this.levelIndex) { - return this; - } - if (args.length > 1 && args[0].length > 0) { - out(`\x1B[${color}${this.name} ${moment().format("yyyy-MM-DD HH:mm:ss")} : [${level.padEnd(5, " ")}] :\x1B[0m`, args); - } else if (args.length === 1 && args[0].length > 0) { - out(`\x1B[${color}${this.name} ${moment().format("yyyy-MM-DD HH:mm:ss")} : [${level.padEnd(5, " ")}] :\x1B[0m`, args); - } else { - // 其他情况直接输出换行 - out(""); - } - return this; - } -} - -export { Logger }; diff --git a/taoyao-client-web/src/components/SettingRoom.vue b/taoyao-client-web/src/components/SettingRoom.vue index 85d60b4..c0a34f9 100644 --- a/taoyao-client-web/src/components/SettingRoom.vue +++ b/taoyao-client-web/src/components/SettingRoom.vue @@ -1,34 +1,35 @@