+ You’ve successfully created a project with
+ Vite +
+ Vue 3.
+
+
+
+
+
diff --git a/taoyao-client/src/components/TheWelcome.vue b/taoyao-client/src/components/TheWelcome.vue
new file mode 100644
index 0000000..5e64625
--- /dev/null
+++ b/taoyao-client/src/components/TheWelcome.vue
@@ -0,0 +1,86 @@
+
+
+
+
+
+
+
+ Documentation
+
+ Vue’s
+ official documentation
+ provides you with all information you need to get started.
+
+
+
+
+
+
+ Tooling
+
+ This project is served and bundled with
+ Vite. The
+ recommended IDE setup is
+ VSCode +
+ Volar. If
+ you need to test your components and web pages, check out
+ Cypress and
+ Cypress Component Testing.
+
+
+
+ More instructions are available in README.md.
+
+
+
+
+
+
+ Ecosystem
+
+ Get official tools and libraries for your project:
+ Pinia,
+ Vue Router,
+ Vue Test Utils, and
+ Vue Dev Tools. If
+ you need more resources, we suggest paying
+ Awesome Vue
+ a visit.
+
+
+
+
+
+
+ Community
+
+ Got stuck? Ask your question on
+ Vue Land, our official
+ Discord server, or
+ StackOverflow. You should also subscribe to
+ our mailing list and follow
+ the official
+ @vuejs
+ twitter account for latest news in the Vue world.
+
+
+
+
+
+
+ Support Vue
+
+ As an independent project, Vue relies on community backing for its sustainability. You can help
+ us by
+ becoming a sponsor.
+
+
diff --git a/taoyao-client/src/components/WelcomeItem.vue b/taoyao-client/src/components/WelcomeItem.vue
new file mode 100644
index 0000000..ba0def3
--- /dev/null
+++ b/taoyao-client/src/components/WelcomeItem.vue
@@ -0,0 +1,86 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/taoyao-client/src/components/icons/IconCommunity.vue b/taoyao-client/src/components/icons/IconCommunity.vue
new file mode 100644
index 0000000..2dc8b05
--- /dev/null
+++ b/taoyao-client/src/components/icons/IconCommunity.vue
@@ -0,0 +1,7 @@
+
+
+
diff --git a/taoyao-client/src/components/icons/IconDocumentation.vue b/taoyao-client/src/components/icons/IconDocumentation.vue
new file mode 100644
index 0000000..6d4791c
--- /dev/null
+++ b/taoyao-client/src/components/icons/IconDocumentation.vue
@@ -0,0 +1,7 @@
+
+
+
diff --git a/taoyao-client/src/components/icons/IconEcosystem.vue b/taoyao-client/src/components/icons/IconEcosystem.vue
new file mode 100644
index 0000000..c3a4f07
--- /dev/null
+++ b/taoyao-client/src/components/icons/IconEcosystem.vue
@@ -0,0 +1,7 @@
+
+
+
diff --git a/taoyao-client/src/components/icons/IconSupport.vue b/taoyao-client/src/components/icons/IconSupport.vue
new file mode 100644
index 0000000..7452834
--- /dev/null
+++ b/taoyao-client/src/components/icons/IconSupport.vue
@@ -0,0 +1,7 @@
+
+
+
diff --git a/taoyao-client/src/components/icons/IconTooling.vue b/taoyao-client/src/components/icons/IconTooling.vue
new file mode 100644
index 0000000..660598d
--- /dev/null
+++ b/taoyao-client/src/components/icons/IconTooling.vue
@@ -0,0 +1,19 @@
+
+
+
+
diff --git a/taoyao-client/src/main.js b/taoyao-client/src/main.js
new file mode 100644
index 0000000..90e6400
--- /dev/null
+++ b/taoyao-client/src/main.js
@@ -0,0 +1,6 @@
+import { createApp } from 'vue'
+import App from './App.vue'
+
+import './assets/main.css'
+
+createApp(App).mount('#app')
diff --git a/taoyao-client/vite.config.js b/taoyao-client/vite.config.js
new file mode 100644
index 0000000..de5cb31
--- /dev/null
+++ b/taoyao-client/vite.config.js
@@ -0,0 +1,14 @@
+import { fileURLToPath, URL } from 'node:url'
+
+import { defineConfig } from 'vite'
+import vue from '@vitejs/plugin-vue'
+
+// https://vitejs.dev/config/
+export default defineConfig({
+ plugins: [vue()],
+ resolve: {
+ alias: {
+ '@': fileURLToPath(new URL('./src', import.meta.url))
+ }
+ }
+})
diff --git a/taoyao-media/README.md b/taoyao-media/README.md
index 0cece0c..e5d541f 100644
--- a/taoyao-media/README.md
+++ b/taoyao-media/README.md
@@ -1 +1,20 @@
# 媒体
+
+只要负责媒体处理,不要添加任何业务逻辑,所有业务逻辑都由[taoyao-signal](../taoyao-signal)处理。
+
+## Mediasoup
+
+```
+# 更新
+git submodule init
+git submodule update --remote
+
+# 编译
+
+```
+
+## 使用
+
+```
+
+```
\ No newline at end of file
diff --git a/taoyao-media/mediasoup b/taoyao-media/mediasoup
new file mode 160000
index 0000000..fe8e84a
--- /dev/null
+++ b/taoyao-media/mediasoup
@@ -0,0 +1 @@
+Subproject commit fe8e84a6750615c67d9a83a20789d2b2b3fac986
diff --git a/taoyao-media/server.js b/taoyao-media/server.js
new file mode 100644
index 0000000..438b8fe
--- /dev/null
+++ b/taoyao-media/server.js
@@ -0,0 +1,3 @@
+/**
+ * 媒体服务
+ */
\ No newline at end of file
diff --git a/taoyao-media/signal.js b/taoyao-media/signal.js
new file mode 100644
index 0000000..c6cd44b
--- /dev/null
+++ b/taoyao-media/signal.js
@@ -0,0 +1,5 @@
+/**
+ * 适配媒体信令
+ * 1. 终端媒体流向
+ * 2. 处理音频视频:降噪、水印等等
+ */
diff --git a/taoyao-signal/README.md b/taoyao-signal/README.md
index 40dac94..65a4c59 100644
--- a/taoyao-signal/README.md
+++ b/taoyao-signal/README.md
@@ -1,414 +1,56 @@
# 信令
-## 信令格式
+## 模块
+
+|模块|名称|描述|
+|:--|:--|:--|
+|taoyao|桃夭|桃之夭夭灼灼其华|
+|taoyao-boot|基础|基础模块|
+|taoyao-node|集群|集群模块|
+|taoyao-live|直播|直播、连麦、监控、视频同看|
+|taoyao-media|媒体|Mediasoup|
+|taoyao-signal|信令|信令服务|
+|taoyao-server|服务|启动服务|
+|taoyao-meeting|会议|会议模式、广播模式、单人对讲|
+
+> 媒体处理均由Mediasoup实现
+
+## 模块关系
```
-{
- "header": {
- "v": "版本",
- "id": 请求标识,
- "sn": "设备标识"
- "pid": 信令标识,
- },
- "code": "响应编码",
- "message": "响应描述",
- "body": {
- // 信令主体
- }
-}
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+| taoyao-server |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+| taoyao-live | taoyao-meeting |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+| taoyao-media | Mediasoup |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+| taoyao-signal |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+| taoyao-boot |
++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
```
-### 符号解释
-
-```
--> 单播:定向传播信令
--) 广播:广播信令(排除自己)
-+) 全员广播:广播信令(包含自己)
-```
-
-## 平台信令(1000~1999)
-
-### 关闭服务信令(1000)
-
-#### 消息主体
-
-```
-# 请求
-{}
-# 广播
-{}
-```
-
-#### 消息流程:终端->服务端+)终端
-
-全员广播[关闭服务信令](#关闭服务信令1000),然后关闭信令服务。
-
-### 执行命令信令(1001)
-
-#### 消息主体
-
-```
-# 请求
-{
- "script": "命令"
-}
-# 响应
-{
- "result": "结果"
-}
-```
-
-#### 消息流程:终端->服务端->终端
-
-执行命令同时响应结果
-
-### 异常信令(1999)
-
-#### 消息主体
-
-```
-{}
-```
-
-## 终端信令(2000~2999)
-
-### 终端信息
-
-### 终端注册信令(2000)
-
-#### 消息主体
-
-```
-# 请求
-{
- "username": "信令授权用户",
- "password": "信令授权密码",
- "ip": "IP地址",
- "mac": "MAC地址",
- "signal": "信号强度",
- "battery": "电池电量"
-}
-# 响应
-{}
-# 广播
-{
- "sn": "终端标识",
- "ip": "IP地址",
- "mac": "MAC地址",
- "signal": "信号强度",
- "battery": "电池电量"
-}
-```
-
-#### 消息流程:终端->服务端-)终端
-
-终端注册成功以后响应同时[下发配置信令](#下发配置信令2004),并且广播[终端上线信令](#终端上线信令2002)。
-
-### 终端关闭信令(2001)
-
-#### 消息主体
-
-```
-# 请求
-{}
-# 广播
-{
- "sn": "终端标识"
-}
-```
-
-#### 消息流程:终端-)服务端
-
-终端关闭以后广播[终端下线信令](#终端下线信令2003),同时释放所有相关资源(信令通道、媒体通道等等)
-
-### 终端上线信令(2002)
-
-#### 消息主体
-
-```
-{
- "sn": "终端标识"
-}
-```
-
-#### 消息流程:服务端->终端
-
-参考[终端注册信令](#终端注册信令2000)
-
-### 终端下线信令(2003)
-
-#### 消息主体
-
-```
-{
- "sn": "终端标识"
-}
-```
-
-#### 消息流程:服务端->终端
-
-参考[终端关闭信令](#终端关闭信令2001)
-
-### 下发配置信令(2004)
-
-#### 消息主体
-
-```
-{
- "time": "系统时间:yyyyMMddHHmmss",
- "media": "媒体配置",
- "webrtc": "WebRTC配置"
-}
-```
-
-#### 消息流程:服务端->终端
-
-参考[终端注册信令](#终端注册信令2000)
-
-### 心跳信令(2005)
-
-#### 消息主体
-
-```
-# 请求
-{
- "signal": "信号强度",
- "battery": "电池电量"
-}
-# 响应
-{}
-```
-
-#### 消息流程:终端->服务端->终端
-
-### 单播信令(2006)
-
-#### 消息主体
-
-```
-# 请求
-{
- "to": "接收终端标识",
- // 主体信息
-}
-# 转发
-{
- // 主体信息
-}
-```
-
-#### 消息流程:终端->服务端->终端
-
-终端转发信令到指定的终端
-
-### 广播信令(2007)
-
-#### 消息主体
-
-```
-# 请求
-{
- // 主体信息
-}
-# 广播
-{
- // 主体信息
-}
-```
-
-#### 消息流程:终端->服务端-)终端
-
-终端广播信令到所有的终端
-
-### 重启终端信令(2997)
-
-#### 消息主体
-
-```
-# 请求
-{
-}
-```
-
-#### 消息流程:服务器->终端
-
-重启终端
-
-### 终端状态信令(2998)
-
-#### 消息主体
-
-```
-# 请求
-{
- "sn": "终端标识"
-}
-# 响应
-{
- "sn": "终端标识",
- "ip": "IP地址",
- "mac": "MAC地址",
- "signal": "信号强度",
- "battery": "电池电量"
-}
-```
-
-#### 消息流程:终端->服务端->终端
-
-响应指定终端状态(如果没有指定终端标识默认查询自己)
-
-### 终端列表信令(2999)
-
-#### 消息主体
-
-```
-# 请求
-{}
-# 响应
-[
- {
- "sn": "终端标识",
- "ip": "IP地址",
- "mac": "MAC地址",
- "signal": "信号强度",
- "battery": "电池电量"
- },
- ...
-]
-```
-
-#### 消息流程:终端->服务端->终端
-
-响应所有终端状态列表
-
-## 直播信令(3000~3999)
-
-### 开启直播信令(3000)
-
-### 关闭直播信令(3001)
-
-### 直播广播信令(3002)
-
-### 直播终端列表信令(3997)
-
-### 直播状态信令(3998)
-
-### 直播列表信令(3999)
-
-## 会议信令(4000~4999)
-
-### 创建会议信令(4000)
-
-#### 消息主体
-
-```
-{}
-----
-{
- "id": "会议标识"
-}
-```
-
-#### 消息流程:终端->服务端+)终端
-
-### 关闭会议信令(4001)
-
-释放资源、广播广播
-
-### 进入会议信令(4002)
-
-#### 消息主体
-
-```
-# 请求
-{
- "id": "会议标识"
-}
-# 广播
-{
- "id": "会议标识",
- "sn": "终端标识"
-}
-```
-
-#### 消息流程:终端->服务端-)终端
-
-终端进入会议,广播通知其他终端。
-
-### 离开会议信令(4003)
-
-广播
-
-### 邀请终端信令(4004)
-
-邀请终端进入会议,终端确认进入发送进入会议信令。
-
-### 踢出终端信令(4005)
-
-广播
-
-### 会议广播信令(4006)
-
-### 会议终端列表信令(4997)
-
-### 会议状态信令(4998)
-
-### 会议列表信令(4999)
-
-## 媒体信令(5000~5999)
-
-### 发布信令(5000)
-
-控制终端推流(服务端拉流)
-
-### 取消发布指令(5001)
-
-控制终端暂停推流(服务端取消拉流)
-
-### 订阅指令(5002)
-
-订阅终端媒体流(终端拉流)
-
-### 取消订阅指令(5003)
-
-取消订阅终端媒体流(终端取消拉流)
-
-### 暂停信令(5004)
-
-终端->服务端
-暂停发布、订阅(不关媒体流通道)
-Moon模式有效
-
-### 恢复信令(5005)
-
-终端->服务端
-暂停发布、订阅(不关媒体流通道)
-Moon模式有效
-
-### 开启录像信令(5006)
-
-### 停止录像信令(5007)
-
-### 配置媒体信令(5008)
-
-配置订阅媒体:码率、帧率、分辨率等等
-
-### Offer信令(5997)
-
-WebRTC信令:`Offer`
-
-### Answer信令(5998)
-
-WebRTC信令:`Answer`
-
-### 候选信令(5999)
-
-WebRTC信令:`IceCandidate`主要用来解决`NAT`问题
-
-## 测试
-
-```
-let socket = new WebSocket("wss://localhost:8888/websocket.signal");
-socket.send('{"header":{"pid":2000,"v":"1.0.0","id":"1","sn":"taoyao"},"body":{"username":"taoyao","password":"taoyao"}}');
-socket.send('{"header":{"pid":1000,"v":"1.0.0","id":"1","sn":"taoyao"},"body":{}}');
-```
\ No newline at end of file
+## WebRTC资料
+
+https://www.cnblogs.com/ssyfj/p/14828185.html
+https://www.cnblogs.com/ssyfj/p/14826516.html
+https://www.cnblogs.com/ssyfj/p/14823861.html
+https://www.cnblogs.com/ssyfj/p/14815266.html
+https://www.cnblogs.com/ssyfj/p/14811253.html
+https://www.cnblogs.com/ssyfj/p/14806678.html
+https://www.cnblogs.com/ssyfj/p/14805040.html
+https://www.cnblogs.com/ssyfj/p/14788663.html
+https://www.cnblogs.com/ssyfj/p/14787012.html
+https://www.cnblogs.com/ssyfj/p/14783168.html
+https://www.cnblogs.com/ssyfj/p/14781982.html
+https://www.cnblogs.com/ssyfj/p/14778839.html
+
+## Mediasoup资料
+
+https://www.cnblogs.com/ssyfj/p/14855454.html
+https://www.cnblogs.com/ssyfj/p/14851442.html
+https://www.cnblogs.com/ssyfj/p/14850041.html
+https://www.cnblogs.com/ssyfj/p/14847097.html
+https://www.cnblogs.com/ssyfj/p/14843182.html
+https://www.cnblogs.com/ssyfj/p/14843082.html
diff --git a/docs/assembly/dev.xml b/taoyao-signal/docs/assembly/dev.xml
similarity index 100%
rename from docs/assembly/dev.xml
rename to taoyao-signal/docs/assembly/dev.xml
diff --git a/docs/assembly/release.xml b/taoyao-signal/docs/assembly/release.xml
similarity index 100%
rename from docs/assembly/release.xml
rename to taoyao-signal/docs/assembly/release.xml
diff --git a/docs/bin/deploy.sh b/taoyao-signal/docs/bin/deploy.sh
similarity index 100%
rename from docs/bin/deploy.sh
rename to taoyao-signal/docs/bin/deploy.sh
diff --git a/docs/bin/startup.sh b/taoyao-signal/docs/bin/startup.sh
similarity index 100%
rename from docs/bin/startup.sh
rename to taoyao-signal/docs/bin/startup.sh
diff --git a/docs/bin/stop.sh b/taoyao-signal/docs/bin/stop.sh
similarity index 100%
rename from docs/bin/stop.sh
rename to taoyao-signal/docs/bin/stop.sh
diff --git a/docs/bin/wait.sh b/taoyao-signal/docs/bin/wait.sh
similarity index 100%
rename from docs/bin/wait.sh
rename to taoyao-signal/docs/bin/wait.sh
diff --git a/docs/nginx/nginx.conf b/taoyao-signal/docs/nginx/nginx.conf
similarity index 100%
rename from docs/nginx/nginx.conf
rename to taoyao-signal/docs/nginx/nginx.conf
diff --git a/taoyao-signal/pom.xml b/taoyao-signal/pom.xml
index 49d3adb..926c65d 100644
--- a/taoyao-signal/pom.xml
+++ b/taoyao-signal/pom.xml
@@ -1,34 +1,314 @@
-
-
+4.0.0
- com.acgist
- taoyao
- 1.0.0
+ org.springframework.boot
+ spring-boot-starter-parent
+ 3.0.0
+
- taoyao-signal
- jar
+ com.acgist
+ taoyao
+ 1.0.0
+ pom
- taoyao-signal
- 信令:信令服务
+ https://gitee.com/acgist/taoyao
+ taoyao
+ 桃夭:桃夭是套`WebRTC`信令服务,使用`Mediasoup`提供媒体服务,支持直播会议两种场景。
+ 2022
+
+
+
+ 17
+ 1.18.24
+ 6.18.0
+ 2.0.0
+ 1.5.3.Final
+ 4.4
+
+ ${project.basedir}
+ UTF-8
+ true
+
+
+
+ taoyao-boot
+ taoyao-node
+ taoyao-live
+ taoyao-media
+ taoyao-signal
+ taoyao-server
+ taoyao-meeting
+
+
- com.acgist
- taoyao-boot
+ org.mapstruct
+ mapstruct
- org.springframework.boot
- spring-boot-starter-web
+ org.mapstruct
+ mapstruct-processor
+
+ org.projectlombok
+ lombok
+
+
+
+ org.apache.commons
+ commons-lang3
+
+
+ org.apache.commons
+ commons-collections4
+
+
+
+ com.fasterxml.jackson.datatype
+ jackson-datatype-jsr310
+
+
+
+ org.springdoc
+ springdoc-openapi-starter-webmvc-ui
+
+
org.springframework.boot
- spring-boot-starter-websocket
+ spring-boot-starter-aop
+
+
+
+ org.springframework.boot
+ spring-boot-autoconfigure
+
+
+
+ org.springframework.boot
+ spring-boot-starter-logging
+
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+
+ com.acgist
+ taoyao-boot
+ ${project.version}
+
+
+ com.acgist
+ taoyao-live
+ ${project.version}
+
+
+ com.acgist
+ taoyao-media
+ ${project.version}
+
+
+ com.acgist
+ taoyao-server
+ ${project.version}
+
+
+ com.acgist
+ taoyao-signal
+ ${project.version}
+
+
+ com.acgist
+ taoyao-meeting
+ ${project.version}
+
+
+
+ org.apache.commons
+ commons-collections4
+ ${collections4.version}
+
+
+
+ org.mapstruct
+ mapstruct
+ ${mapstruct.version}
+ provided
+
+
+ org.mapstruct
+ mapstruct-processor
+ ${mapstruct.version}
+ provided
+
+
+
+ org.projectlombok
+ lombok
+ ${lombok.version}
+ provided
+
+
+
+
+
+
+
+ src/main/resources
+
+ **/*.yml
+ **/*.properties
+
+ true
+
+
+ src/main/resources
+
+
+
+ **/*.*
+
+
+ **/*.yml
+ **/*.properties
+
+ false
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+ ${java.version}
+ ${java.version}
+ ${taoyao.maven.encoding}
+
+
+
+ org.apache.maven.plugins
+ maven-jar-plugin
+
+
+
+ *.jks
+ *.yml
+ *.properties
+
+
+
+
+ ../config/
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-assembly-plugin
+
+
+ assembly
+ package
+
+ single
+
+
+ false
+ ${taoyao.maven.skip.assembly}
+ false
+
+
+
+
+
+
+
+
+
+
+ dev
+
+ true
+
+
+ dev
+
+ -Xms512M -Xmx1024M -XX:NewRatio=1 -XX:SurvivorRatio=2
+
+
+
+
+ org.apache.maven.plugins
+ maven-assembly-plugin
+
+
+ ${taoyao.maven.basedir}/docs/assembly/dev.xml
+
+
+
+
+
+
+
+
+ org.springdoc
+ springdoc-openapi-starter-webmvc-ui
+ ${springdoc.version}
+
+
+
+
+
+ release
+
+ release
+
+ -Xms2048M -Xmx4096M -XX:NewRatio=1 -XX:SurvivorRatio=2
+
+
+
+
+ org.apache.maven.plugins
+ maven-assembly-plugin
+
+
+ ${taoyao.maven.basedir}/docs/assembly/release.xml
+
+
+
+
+
+
+
+
+ org.springdoc
+ springdoc-openapi-starter-webmvc-ui
+ ${springdoc.version}
+ provided
+
+
+
+
+
+
\ No newline at end of file
diff --git a/taoyao-boot/pom.xml b/taoyao-signal/taoyao-boot/pom.xml
similarity index 100%
rename from taoyao-boot/pom.xml
rename to taoyao-signal/taoyao-boot/pom.xml
diff --git a/taoyao-boot/src/main/java/com/acgist/taoyao/boot/annotation/EventListener.java b/taoyao-signal/taoyao-boot/src/main/java/com/acgist/taoyao/boot/annotation/EventListener.java
similarity index 100%
rename from taoyao-boot/src/main/java/com/acgist/taoyao/boot/annotation/EventListener.java
rename to taoyao-signal/taoyao-boot/src/main/java/com/acgist/taoyao/boot/annotation/EventListener.java
diff --git a/taoyao-boot/src/main/java/com/acgist/taoyao/boot/annotation/Manager.java b/taoyao-signal/taoyao-boot/src/main/java/com/acgist/taoyao/boot/annotation/Manager.java
similarity index 100%
rename from taoyao-boot/src/main/java/com/acgist/taoyao/boot/annotation/Manager.java
rename to taoyao-signal/taoyao-boot/src/main/java/com/acgist/taoyao/boot/annotation/Manager.java
diff --git a/taoyao-boot/src/main/java/com/acgist/taoyao/boot/annotation/Protocol.java b/taoyao-signal/taoyao-boot/src/main/java/com/acgist/taoyao/boot/annotation/Protocol.java
similarity index 100%
rename from taoyao-boot/src/main/java/com/acgist/taoyao/boot/annotation/Protocol.java
rename to taoyao-signal/taoyao-boot/src/main/java/com/acgist/taoyao/boot/annotation/Protocol.java
diff --git a/taoyao-boot/src/main/java/com/acgist/taoyao/boot/config/BootAutoConfiguration.java b/taoyao-signal/taoyao-boot/src/main/java/com/acgist/taoyao/boot/config/BootAutoConfiguration.java
similarity index 100%
rename from taoyao-boot/src/main/java/com/acgist/taoyao/boot/config/BootAutoConfiguration.java
rename to taoyao-signal/taoyao-boot/src/main/java/com/acgist/taoyao/boot/config/BootAutoConfiguration.java
diff --git a/taoyao-boot/src/main/java/com/acgist/taoyao/boot/config/SpringDocAutoConfiguration.java b/taoyao-signal/taoyao-boot/src/main/java/com/acgist/taoyao/boot/config/SpringDocAutoConfiguration.java
similarity index 100%
rename from taoyao-boot/src/main/java/com/acgist/taoyao/boot/config/SpringDocAutoConfiguration.java
rename to taoyao-signal/taoyao-boot/src/main/java/com/acgist/taoyao/boot/config/SpringDocAutoConfiguration.java
diff --git a/taoyao-boot/src/main/java/com/acgist/taoyao/boot/config/WebMvcConfigurerAutoConfiguration.java b/taoyao-signal/taoyao-boot/src/main/java/com/acgist/taoyao/boot/config/WebMvcConfigurerAutoConfiguration.java
similarity index 100%
rename from taoyao-boot/src/main/java/com/acgist/taoyao/boot/config/WebMvcConfigurerAutoConfiguration.java
rename to taoyao-signal/taoyao-boot/src/main/java/com/acgist/taoyao/boot/config/WebMvcConfigurerAutoConfiguration.java
diff --git a/taoyao-boot/src/main/java/com/acgist/taoyao/boot/controller/TaoyaoControllerAdvice.java b/taoyao-signal/taoyao-boot/src/main/java/com/acgist/taoyao/boot/controller/TaoyaoControllerAdvice.java
similarity index 100%
rename from taoyao-boot/src/main/java/com/acgist/taoyao/boot/controller/TaoyaoControllerAdvice.java
rename to taoyao-signal/taoyao-boot/src/main/java/com/acgist/taoyao/boot/controller/TaoyaoControllerAdvice.java
diff --git a/taoyao-boot/src/main/java/com/acgist/taoyao/boot/controller/TaoyaoErrorController.java b/taoyao-signal/taoyao-boot/src/main/java/com/acgist/taoyao/boot/controller/TaoyaoErrorController.java
similarity index 100%
rename from taoyao-boot/src/main/java/com/acgist/taoyao/boot/controller/TaoyaoErrorController.java
rename to taoyao-signal/taoyao-boot/src/main/java/com/acgist/taoyao/boot/controller/TaoyaoErrorController.java
diff --git a/taoyao-boot/src/main/java/com/acgist/taoyao/boot/interceptor/InterceptorAdapter.java b/taoyao-signal/taoyao-boot/src/main/java/com/acgist/taoyao/boot/interceptor/InterceptorAdapter.java
similarity index 100%
rename from taoyao-boot/src/main/java/com/acgist/taoyao/boot/interceptor/InterceptorAdapter.java
rename to taoyao-signal/taoyao-boot/src/main/java/com/acgist/taoyao/boot/interceptor/InterceptorAdapter.java
diff --git a/taoyao-boot/src/main/java/com/acgist/taoyao/boot/model/Header.java b/taoyao-signal/taoyao-boot/src/main/java/com/acgist/taoyao/boot/model/Header.java
similarity index 100%
rename from taoyao-boot/src/main/java/com/acgist/taoyao/boot/model/Header.java
rename to taoyao-signal/taoyao-boot/src/main/java/com/acgist/taoyao/boot/model/Header.java
diff --git a/taoyao-boot/src/main/java/com/acgist/taoyao/boot/model/Message.java b/taoyao-signal/taoyao-boot/src/main/java/com/acgist/taoyao/boot/model/Message.java
similarity index 100%
rename from taoyao-boot/src/main/java/com/acgist/taoyao/boot/model/Message.java
rename to taoyao-signal/taoyao-boot/src/main/java/com/acgist/taoyao/boot/model/Message.java
diff --git a/taoyao-boot/src/main/java/com/acgist/taoyao/boot/model/MessageCode.java b/taoyao-signal/taoyao-boot/src/main/java/com/acgist/taoyao/boot/model/MessageCode.java
similarity index 100%
rename from taoyao-boot/src/main/java/com/acgist/taoyao/boot/model/MessageCode.java
rename to taoyao-signal/taoyao-boot/src/main/java/com/acgist/taoyao/boot/model/MessageCode.java
diff --git a/taoyao-boot/src/main/java/com/acgist/taoyao/boot/model/MessageCodeException.java b/taoyao-signal/taoyao-boot/src/main/java/com/acgist/taoyao/boot/model/MessageCodeException.java
similarity index 100%
rename from taoyao-boot/src/main/java/com/acgist/taoyao/boot/model/MessageCodeException.java
rename to taoyao-signal/taoyao-boot/src/main/java/com/acgist/taoyao/boot/model/MessageCodeException.java
diff --git a/taoyao-boot/src/main/java/com/acgist/taoyao/boot/model/Model.java b/taoyao-signal/taoyao-boot/src/main/java/com/acgist/taoyao/boot/model/Model.java
similarity index 100%
rename from taoyao-boot/src/main/java/com/acgist/taoyao/boot/model/Model.java
rename to taoyao-signal/taoyao-boot/src/main/java/com/acgist/taoyao/boot/model/Model.java
diff --git a/taoyao-boot/src/main/java/com/acgist/taoyao/boot/model/ModifyOptional.java b/taoyao-signal/taoyao-boot/src/main/java/com/acgist/taoyao/boot/model/ModifyOptional.java
similarity index 100%
rename from taoyao-boot/src/main/java/com/acgist/taoyao/boot/model/ModifyOptional.java
rename to taoyao-signal/taoyao-boot/src/main/java/com/acgist/taoyao/boot/model/ModifyOptional.java
diff --git a/taoyao-boot/src/main/java/com/acgist/taoyao/boot/property/IdProperties.java b/taoyao-signal/taoyao-boot/src/main/java/com/acgist/taoyao/boot/property/IdProperties.java
similarity index 100%
rename from taoyao-boot/src/main/java/com/acgist/taoyao/boot/property/IdProperties.java
rename to taoyao-signal/taoyao-boot/src/main/java/com/acgist/taoyao/boot/property/IdProperties.java
diff --git a/taoyao-boot/src/main/java/com/acgist/taoyao/boot/property/KmsProperties.java b/taoyao-signal/taoyao-boot/src/main/java/com/acgist/taoyao/boot/property/KmsProperties.java
similarity index 100%
rename from taoyao-boot/src/main/java/com/acgist/taoyao/boot/property/KmsProperties.java
rename to taoyao-signal/taoyao-boot/src/main/java/com/acgist/taoyao/boot/property/KmsProperties.java
diff --git a/taoyao-boot/src/main/java/com/acgist/taoyao/boot/property/MediaAudioProperties.java b/taoyao-signal/taoyao-boot/src/main/java/com/acgist/taoyao/boot/property/MediaAudioProperties.java
similarity index 100%
rename from taoyao-boot/src/main/java/com/acgist/taoyao/boot/property/MediaAudioProperties.java
rename to taoyao-signal/taoyao-boot/src/main/java/com/acgist/taoyao/boot/property/MediaAudioProperties.java
diff --git a/taoyao-boot/src/main/java/com/acgist/taoyao/boot/property/MediaProperties.java b/taoyao-signal/taoyao-boot/src/main/java/com/acgist/taoyao/boot/property/MediaProperties.java
similarity index 100%
rename from taoyao-boot/src/main/java/com/acgist/taoyao/boot/property/MediaProperties.java
rename to taoyao-signal/taoyao-boot/src/main/java/com/acgist/taoyao/boot/property/MediaProperties.java
diff --git a/taoyao-boot/src/main/java/com/acgist/taoyao/boot/property/MediaVideoProperties.java b/taoyao-signal/taoyao-boot/src/main/java/com/acgist/taoyao/boot/property/MediaVideoProperties.java
similarity index 100%
rename from taoyao-boot/src/main/java/com/acgist/taoyao/boot/property/MediaVideoProperties.java
rename to taoyao-signal/taoyao-boot/src/main/java/com/acgist/taoyao/boot/property/MediaVideoProperties.java
diff --git a/taoyao-boot/src/main/java/com/acgist/taoyao/boot/property/MoonProperties.java b/taoyao-signal/taoyao-boot/src/main/java/com/acgist/taoyao/boot/property/MoonProperties.java
similarity index 100%
rename from taoyao-boot/src/main/java/com/acgist/taoyao/boot/property/MoonProperties.java
rename to taoyao-signal/taoyao-boot/src/main/java/com/acgist/taoyao/boot/property/MoonProperties.java
diff --git a/taoyao-boot/src/main/java/com/acgist/taoyao/boot/property/NodeProperties.java b/taoyao-signal/taoyao-boot/src/main/java/com/acgist/taoyao/boot/property/NodeProperties.java
similarity index 100%
rename from taoyao-boot/src/main/java/com/acgist/taoyao/boot/property/NodeProperties.java
rename to taoyao-signal/taoyao-boot/src/main/java/com/acgist/taoyao/boot/property/NodeProperties.java
diff --git a/taoyao-boot/src/main/java/com/acgist/taoyao/boot/property/SecurityProperties.java b/taoyao-signal/taoyao-boot/src/main/java/com/acgist/taoyao/boot/property/SecurityProperties.java
similarity index 100%
rename from taoyao-boot/src/main/java/com/acgist/taoyao/boot/property/SecurityProperties.java
rename to taoyao-signal/taoyao-boot/src/main/java/com/acgist/taoyao/boot/property/SecurityProperties.java
diff --git a/taoyao-boot/src/main/java/com/acgist/taoyao/boot/property/SignalProperties.java b/taoyao-signal/taoyao-boot/src/main/java/com/acgist/taoyao/boot/property/SignalProperties.java
similarity index 100%
rename from taoyao-boot/src/main/java/com/acgist/taoyao/boot/property/SignalProperties.java
rename to taoyao-signal/taoyao-boot/src/main/java/com/acgist/taoyao/boot/property/SignalProperties.java
diff --git a/taoyao-boot/src/main/java/com/acgist/taoyao/boot/property/TaoyaoProperties.java b/taoyao-signal/taoyao-boot/src/main/java/com/acgist/taoyao/boot/property/TaoyaoProperties.java
similarity index 100%
rename from taoyao-boot/src/main/java/com/acgist/taoyao/boot/property/TaoyaoProperties.java
rename to taoyao-signal/taoyao-boot/src/main/java/com/acgist/taoyao/boot/property/TaoyaoProperties.java
diff --git a/taoyao-boot/src/main/java/com/acgist/taoyao/boot/property/WebrtcProperties.java b/taoyao-signal/taoyao-boot/src/main/java/com/acgist/taoyao/boot/property/WebrtcProperties.java
similarity index 100%
rename from taoyao-boot/src/main/java/com/acgist/taoyao/boot/property/WebrtcProperties.java
rename to taoyao-signal/taoyao-boot/src/main/java/com/acgist/taoyao/boot/property/WebrtcProperties.java
diff --git a/taoyao-boot/src/main/java/com/acgist/taoyao/boot/service/IdService.java b/taoyao-signal/taoyao-boot/src/main/java/com/acgist/taoyao/boot/service/IdService.java
similarity index 100%
rename from taoyao-boot/src/main/java/com/acgist/taoyao/boot/service/IdService.java
rename to taoyao-signal/taoyao-boot/src/main/java/com/acgist/taoyao/boot/service/IdService.java
diff --git a/taoyao-boot/src/main/java/com/acgist/taoyao/boot/service/impl/IdServiceImpl.java b/taoyao-signal/taoyao-boot/src/main/java/com/acgist/taoyao/boot/service/impl/IdServiceImpl.java
similarity index 100%
rename from taoyao-boot/src/main/java/com/acgist/taoyao/boot/service/impl/IdServiceImpl.java
rename to taoyao-signal/taoyao-boot/src/main/java/com/acgist/taoyao/boot/service/impl/IdServiceImpl.java
diff --git a/taoyao-boot/src/main/java/com/acgist/taoyao/boot/utils/BeanUtils.java b/taoyao-signal/taoyao-boot/src/main/java/com/acgist/taoyao/boot/utils/BeanUtils.java
similarity index 100%
rename from taoyao-boot/src/main/java/com/acgist/taoyao/boot/utils/BeanUtils.java
rename to taoyao-signal/taoyao-boot/src/main/java/com/acgist/taoyao/boot/utils/BeanUtils.java
diff --git a/taoyao-boot/src/main/java/com/acgist/taoyao/boot/utils/DateUtils.java b/taoyao-signal/taoyao-boot/src/main/java/com/acgist/taoyao/boot/utils/DateUtils.java
similarity index 100%
rename from taoyao-boot/src/main/java/com/acgist/taoyao/boot/utils/DateUtils.java
rename to taoyao-signal/taoyao-boot/src/main/java/com/acgist/taoyao/boot/utils/DateUtils.java
diff --git a/taoyao-boot/src/main/java/com/acgist/taoyao/boot/utils/ErrorUtils.java b/taoyao-signal/taoyao-boot/src/main/java/com/acgist/taoyao/boot/utils/ErrorUtils.java
similarity index 100%
rename from taoyao-boot/src/main/java/com/acgist/taoyao/boot/utils/ErrorUtils.java
rename to taoyao-signal/taoyao-boot/src/main/java/com/acgist/taoyao/boot/utils/ErrorUtils.java
diff --git a/taoyao-boot/src/main/java/com/acgist/taoyao/boot/utils/FileUtils.java b/taoyao-signal/taoyao-boot/src/main/java/com/acgist/taoyao/boot/utils/FileUtils.java
similarity index 100%
rename from taoyao-boot/src/main/java/com/acgist/taoyao/boot/utils/FileUtils.java
rename to taoyao-signal/taoyao-boot/src/main/java/com/acgist/taoyao/boot/utils/FileUtils.java
diff --git a/taoyao-boot/src/main/java/com/acgist/taoyao/boot/utils/JSONUtils.java b/taoyao-signal/taoyao-boot/src/main/java/com/acgist/taoyao/boot/utils/JSONUtils.java
similarity index 100%
rename from taoyao-boot/src/main/java/com/acgist/taoyao/boot/utils/JSONUtils.java
rename to taoyao-signal/taoyao-boot/src/main/java/com/acgist/taoyao/boot/utils/JSONUtils.java
diff --git a/taoyao-boot/src/main/java/com/acgist/taoyao/boot/utils/URLUtils.java b/taoyao-signal/taoyao-boot/src/main/java/com/acgist/taoyao/boot/utils/URLUtils.java
similarity index 100%
rename from taoyao-boot/src/main/java/com/acgist/taoyao/boot/utils/URLUtils.java
rename to taoyao-signal/taoyao-boot/src/main/java/com/acgist/taoyao/boot/utils/URLUtils.java
diff --git a/taoyao-boot/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/taoyao-signal/taoyao-boot/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
similarity index 100%
rename from taoyao-boot/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
rename to taoyao-signal/taoyao-boot/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
diff --git a/taoyao-boot/src/main/resources/banner.txt b/taoyao-signal/taoyao-boot/src/main/resources/banner.txt
similarity index 100%
rename from taoyao-boot/src/main/resources/banner.txt
rename to taoyao-signal/taoyao-boot/src/main/resources/banner.txt
diff --git a/taoyao-boot/src/main/resources/logback-spring.xml b/taoyao-signal/taoyao-boot/src/main/resources/logback-spring.xml
similarity index 100%
rename from taoyao-boot/src/main/resources/logback-spring.xml
rename to taoyao-signal/taoyao-boot/src/main/resources/logback-spring.xml
diff --git a/taoyao-live/pom.xml b/taoyao-signal/taoyao-live/pom.xml
similarity index 100%
rename from taoyao-live/pom.xml
rename to taoyao-signal/taoyao-live/pom.xml
diff --git a/taoyao-live/src/main/java/com/acgist/taoyao/live/Live.java b/taoyao-signal/taoyao-live/src/main/java/com/acgist/taoyao/live/Live.java
similarity index 100%
rename from taoyao-live/src/main/java/com/acgist/taoyao/live/Live.java
rename to taoyao-signal/taoyao-live/src/main/java/com/acgist/taoyao/live/Live.java
diff --git a/taoyao-live/src/main/java/com/acgist/taoyao/live/LiveListenerAdapter.java b/taoyao-signal/taoyao-live/src/main/java/com/acgist/taoyao/live/LiveListenerAdapter.java
similarity index 100%
rename from taoyao-live/src/main/java/com/acgist/taoyao/live/LiveListenerAdapter.java
rename to taoyao-signal/taoyao-live/src/main/java/com/acgist/taoyao/live/LiveListenerAdapter.java
diff --git a/taoyao-live/src/main/java/com/acgist/taoyao/live/LiveManager.java b/taoyao-signal/taoyao-live/src/main/java/com/acgist/taoyao/live/LiveManager.java
similarity index 100%
rename from taoyao-live/src/main/java/com/acgist/taoyao/live/LiveManager.java
rename to taoyao-signal/taoyao-live/src/main/java/com/acgist/taoyao/live/LiveManager.java
diff --git a/taoyao-live/src/main/java/com/acgist/taoyao/live/controller/LiveController.java b/taoyao-signal/taoyao-live/src/main/java/com/acgist/taoyao/live/controller/LiveController.java
similarity index 100%
rename from taoyao-live/src/main/java/com/acgist/taoyao/live/controller/LiveController.java
rename to taoyao-signal/taoyao-live/src/main/java/com/acgist/taoyao/live/controller/LiveController.java
diff --git a/taoyao-webrtc/README.md b/taoyao-signal/taoyao-media/README.md
similarity index 99%
rename from taoyao-webrtc/README.md
rename to taoyao-signal/taoyao-media/README.md
index f7f5598..9212afd 100644
--- a/taoyao-webrtc/README.md
+++ b/taoyao-signal/taoyao-media/README.md
@@ -1,3 +1,5 @@
+# 媒体
+
# WebRTC
## WebRTC协议栈
diff --git a/taoyao-media/pom.xml b/taoyao-signal/taoyao-media/pom.xml
similarity index 82%
rename from taoyao-media/pom.xml
rename to taoyao-signal/taoyao-media/pom.xml
index aad96ff..f9b0c66 100644
--- a/taoyao-media/pom.xml
+++ b/taoyao-signal/taoyao-media/pom.xml
@@ -19,11 +19,7 @@
com.acgist
- taoyao-webrtc-mesh
-
-
- com.acgist
- taoyao-webrtc-moon
+ taoyao-signal
diff --git a/taoyao-webrtc/taoyao-webrtc-mesh/src/main/java/com/acgist/taoyao/webrtc/mesh/listener/MediaAnswerListener.java b/taoyao-signal/taoyao-media/src/main/java/com/acgist/taoyao/media/listener/MediaAnswerListener.java
similarity index 87%
rename from taoyao-webrtc/taoyao-webrtc-mesh/src/main/java/com/acgist/taoyao/webrtc/mesh/listener/MediaAnswerListener.java
rename to taoyao-signal/taoyao-media/src/main/java/com/acgist/taoyao/media/listener/MediaAnswerListener.java
index 7c55013..c8d738b 100644
--- a/taoyao-webrtc/taoyao-webrtc-mesh/src/main/java/com/acgist/taoyao/webrtc/mesh/listener/MediaAnswerListener.java
+++ b/taoyao-signal/taoyao-media/src/main/java/com/acgist/taoyao/media/listener/MediaAnswerListener.java
@@ -1,7 +1,8 @@
-package com.acgist.taoyao.webrtc.mesh.listener;
+package com.acgist.taoyao.media.listener;
import java.util.Map;
+import com.acgist.taoyao.boot.annotation.EventListener;
import com.acgist.taoyao.boot.model.Message;
import com.acgist.taoyao.signal.event.media.MediaAnswerEvent;
import com.acgist.taoyao.signal.listener.MediaListenerAdapter;
@@ -14,8 +15,9 @@ import lombok.extern.slf4j.Slf4j;
* @author acgist
*/
@Slf4j
+@EventListener
public class MediaAnswerListener extends MediaListenerAdapter {
-
+
@Override
public void onApplicationEvent(MediaAnswerEvent event) {
final String sn = event.getSn();
diff --git a/taoyao-webrtc/taoyao-webrtc-mesh/src/main/java/com/acgist/taoyao/webrtc/mesh/listener/MediaCandidateListener.java b/taoyao-signal/taoyao-media/src/main/java/com/acgist/taoyao/media/listener/MediaCandidateListener.java
similarity index 87%
rename from taoyao-webrtc/taoyao-webrtc-mesh/src/main/java/com/acgist/taoyao/webrtc/mesh/listener/MediaCandidateListener.java
rename to taoyao-signal/taoyao-media/src/main/java/com/acgist/taoyao/media/listener/MediaCandidateListener.java
index 19368f3..664805b 100644
--- a/taoyao-webrtc/taoyao-webrtc-mesh/src/main/java/com/acgist/taoyao/webrtc/mesh/listener/MediaCandidateListener.java
+++ b/taoyao-signal/taoyao-media/src/main/java/com/acgist/taoyao/media/listener/MediaCandidateListener.java
@@ -1,7 +1,8 @@
-package com.acgist.taoyao.webrtc.mesh.listener;
+package com.acgist.taoyao.media.listener;
import java.util.Map;
+import com.acgist.taoyao.boot.annotation.EventListener;
import com.acgist.taoyao.boot.model.Message;
import com.acgist.taoyao.signal.event.media.MediaCandidateEvent;
import com.acgist.taoyao.signal.listener.MediaListenerAdapter;
@@ -14,6 +15,7 @@ import lombok.extern.slf4j.Slf4j;
* @author acgist
*/
@Slf4j
+@EventListener
public class MediaCandidateListener extends MediaListenerAdapter {
@Override
diff --git a/taoyao-webrtc/taoyao-webrtc-mesh/src/main/java/com/acgist/taoyao/webrtc/mesh/listener/MediaOfferListener.java b/taoyao-signal/taoyao-media/src/main/java/com/acgist/taoyao/media/listener/MediaOfferListener.java
similarity index 87%
rename from taoyao-webrtc/taoyao-webrtc-mesh/src/main/java/com/acgist/taoyao/webrtc/mesh/listener/MediaOfferListener.java
rename to taoyao-signal/taoyao-media/src/main/java/com/acgist/taoyao/media/listener/MediaOfferListener.java
index 2ab7053..ba27d45 100644
--- a/taoyao-webrtc/taoyao-webrtc-mesh/src/main/java/com/acgist/taoyao/webrtc/mesh/listener/MediaOfferListener.java
+++ b/taoyao-signal/taoyao-media/src/main/java/com/acgist/taoyao/media/listener/MediaOfferListener.java
@@ -1,7 +1,8 @@
-package com.acgist.taoyao.webrtc.mesh.listener;
+package com.acgist.taoyao.media.listener;
import java.util.Map;
+import com.acgist.taoyao.boot.annotation.EventListener;
import com.acgist.taoyao.boot.model.Message;
import com.acgist.taoyao.signal.event.media.MediaOfferEvent;
import com.acgist.taoyao.signal.listener.MediaListenerAdapter;
@@ -14,6 +15,7 @@ import lombok.extern.slf4j.Slf4j;
* @author acgist
*/
@Slf4j
+@EventListener
public class MediaOfferListener extends MediaListenerAdapter {
@Override
diff --git a/taoyao-webrtc/taoyao-webrtc-mesh/src/main/java/com/acgist/taoyao/webrtc/mesh/listener/MediaPublishListener.java b/taoyao-signal/taoyao-media/src/main/java/com/acgist/taoyao/media/listener/MediaPublishListener.java
similarity index 87%
rename from taoyao-webrtc/taoyao-webrtc-mesh/src/main/java/com/acgist/taoyao/webrtc/mesh/listener/MediaPublishListener.java
rename to taoyao-signal/taoyao-media/src/main/java/com/acgist/taoyao/media/listener/MediaPublishListener.java
index 7363389..742fc40 100644
--- a/taoyao-webrtc/taoyao-webrtc-mesh/src/main/java/com/acgist/taoyao/webrtc/mesh/listener/MediaPublishListener.java
+++ b/taoyao-signal/taoyao-media/src/main/java/com/acgist/taoyao/media/listener/MediaPublishListener.java
@@ -1,7 +1,8 @@
-package com.acgist.taoyao.webrtc.mesh.listener;
+package com.acgist.taoyao.media.listener;
import java.util.Map;
+import com.acgist.taoyao.boot.annotation.EventListener;
import com.acgist.taoyao.boot.model.Message;
import com.acgist.taoyao.signal.event.media.MediaPublishEvent;
import com.acgist.taoyao.signal.listener.MediaListenerAdapter;
@@ -14,6 +15,7 @@ import lombok.extern.slf4j.Slf4j;
* @author acgist
*/
@Slf4j
+@EventListener
public class MediaPublishListener extends MediaListenerAdapter {
@Override
diff --git a/taoyao-webrtc/taoyao-webrtc-mesh/src/main/java/com/acgist/taoyao/webrtc/mesh/listener/MediaSubscribeListener.java b/taoyao-signal/taoyao-media/src/main/java/com/acgist/taoyao/media/listener/MediaSubscribeListener.java
similarity index 87%
rename from taoyao-webrtc/taoyao-webrtc-mesh/src/main/java/com/acgist/taoyao/webrtc/mesh/listener/MediaSubscribeListener.java
rename to taoyao-signal/taoyao-media/src/main/java/com/acgist/taoyao/media/listener/MediaSubscribeListener.java
index 5112f60..5539ed1 100644
--- a/taoyao-webrtc/taoyao-webrtc-mesh/src/main/java/com/acgist/taoyao/webrtc/mesh/listener/MediaSubscribeListener.java
+++ b/taoyao-signal/taoyao-media/src/main/java/com/acgist/taoyao/media/listener/MediaSubscribeListener.java
@@ -1,7 +1,8 @@
-package com.acgist.taoyao.webrtc.mesh.listener;
+package com.acgist.taoyao.media.listener;
import java.util.Map;
+import com.acgist.taoyao.boot.annotation.EventListener;
import com.acgist.taoyao.boot.model.Message;
import com.acgist.taoyao.signal.event.media.MediaSubscribeEvent;
import com.acgist.taoyao.signal.listener.MediaListenerAdapter;
@@ -14,6 +15,7 @@ import lombok.extern.slf4j.Slf4j;
* @author acgist
*/
@Slf4j
+@EventListener
public class MediaSubscribeListener extends MediaListenerAdapter {
@Override
diff --git a/taoyao-media/src/main/java/com/acgist/taoyao/media/processor/MediaAggregateProcessor.java b/taoyao-signal/taoyao-media/src/main/java/com/acgist/taoyao/media/processor/MediaAggregateProcessor.java
similarity index 100%
rename from taoyao-media/src/main/java/com/acgist/taoyao/media/processor/MediaAggregateProcessor.java
rename to taoyao-signal/taoyao-media/src/main/java/com/acgist/taoyao/media/processor/MediaAggregateProcessor.java
diff --git a/taoyao-media/src/main/java/com/acgist/taoyao/media/processor/MediaParallelProcessor.java b/taoyao-signal/taoyao-media/src/main/java/com/acgist/taoyao/media/processor/MediaParallelProcessor.java
similarity index 100%
rename from taoyao-media/src/main/java/com/acgist/taoyao/media/processor/MediaParallelProcessor.java
rename to taoyao-signal/taoyao-media/src/main/java/com/acgist/taoyao/media/processor/MediaParallelProcessor.java
diff --git a/taoyao-media/src/main/java/com/acgist/taoyao/media/processor/MediaRecordProcessor.java b/taoyao-signal/taoyao-media/src/main/java/com/acgist/taoyao/media/processor/MediaRecordProcessor.java
similarity index 100%
rename from taoyao-media/src/main/java/com/acgist/taoyao/media/processor/MediaRecordProcessor.java
rename to taoyao-signal/taoyao-media/src/main/java/com/acgist/taoyao/media/processor/MediaRecordProcessor.java
diff --git a/taoyao-media/src/main/java/com/acgist/taoyao/media/processor/audio/MediaDenoiseProcessor.java b/taoyao-signal/taoyao-media/src/main/java/com/acgist/taoyao/media/processor/audio/MediaDenoiseProcessor.java
similarity index 100%
rename from taoyao-media/src/main/java/com/acgist/taoyao/media/processor/audio/MediaDenoiseProcessor.java
rename to taoyao-signal/taoyao-media/src/main/java/com/acgist/taoyao/media/processor/audio/MediaDenoiseProcessor.java
diff --git a/taoyao-media/src/main/java/com/acgist/taoyao/media/processor/audio/MediaMixProcessor.java b/taoyao-signal/taoyao-media/src/main/java/com/acgist/taoyao/media/processor/audio/MediaMixProcessor.java
similarity index 100%
rename from taoyao-media/src/main/java/com/acgist/taoyao/media/processor/audio/MediaMixProcessor.java
rename to taoyao-signal/taoyao-media/src/main/java/com/acgist/taoyao/media/processor/audio/MediaMixProcessor.java
diff --git a/taoyao-media/src/main/java/com/acgist/taoyao/media/processor/audio/MediaWhineProcessor.java b/taoyao-signal/taoyao-media/src/main/java/com/acgist/taoyao/media/processor/audio/MediaWhineProcessor.java
similarity index 100%
rename from taoyao-media/src/main/java/com/acgist/taoyao/media/processor/audio/MediaWhineProcessor.java
rename to taoyao-signal/taoyao-media/src/main/java/com/acgist/taoyao/media/processor/audio/MediaWhineProcessor.java
diff --git a/taoyao-media/src/main/java/com/acgist/taoyao/media/processor/video/MediaBeautyProcessor.java b/taoyao-signal/taoyao-media/src/main/java/com/acgist/taoyao/media/processor/video/MediaBeautyProcessor.java
similarity index 100%
rename from taoyao-media/src/main/java/com/acgist/taoyao/media/processor/video/MediaBeautyProcessor.java
rename to taoyao-signal/taoyao-media/src/main/java/com/acgist/taoyao/media/processor/video/MediaBeautyProcessor.java
diff --git a/taoyao-media/src/main/java/com/acgist/taoyao/media/processor/video/MediaMarkHandler.java b/taoyao-signal/taoyao-media/src/main/java/com/acgist/taoyao/media/processor/video/MediaMarkHandler.java
similarity index 100%
rename from taoyao-media/src/main/java/com/acgist/taoyao/media/processor/video/MediaMarkHandler.java
rename to taoyao-signal/taoyao-media/src/main/java/com/acgist/taoyao/media/processor/video/MediaMarkHandler.java
diff --git a/taoyao-media/src/main/java/com/acgist/taoyao/media/processor/video/MediaWatermarkHandler.java b/taoyao-signal/taoyao-media/src/main/java/com/acgist/taoyao/media/processor/video/MediaWatermarkHandler.java
similarity index 100%
rename from taoyao-media/src/main/java/com/acgist/taoyao/media/processor/video/MediaWatermarkHandler.java
rename to taoyao-signal/taoyao-media/src/main/java/com/acgist/taoyao/media/processor/video/MediaWatermarkHandler.java
diff --git a/taoyao-meeting/pom.xml b/taoyao-signal/taoyao-meeting/pom.xml
similarity index 100%
rename from taoyao-meeting/pom.xml
rename to taoyao-signal/taoyao-meeting/pom.xml
diff --git a/taoyao-meeting/src/main/java/com/acgist/taoyao/meeting/Meeting.java b/taoyao-signal/taoyao-meeting/src/main/java/com/acgist/taoyao/meeting/Meeting.java
similarity index 100%
rename from taoyao-meeting/src/main/java/com/acgist/taoyao/meeting/Meeting.java
rename to taoyao-signal/taoyao-meeting/src/main/java/com/acgist/taoyao/meeting/Meeting.java
diff --git a/taoyao-meeting/src/main/java/com/acgist/taoyao/meeting/MeetingListenerAdapter.java b/taoyao-signal/taoyao-meeting/src/main/java/com/acgist/taoyao/meeting/MeetingListenerAdapter.java
similarity index 100%
rename from taoyao-meeting/src/main/java/com/acgist/taoyao/meeting/MeetingListenerAdapter.java
rename to taoyao-signal/taoyao-meeting/src/main/java/com/acgist/taoyao/meeting/MeetingListenerAdapter.java
diff --git a/taoyao-meeting/src/main/java/com/acgist/taoyao/meeting/MeetingManager.java b/taoyao-signal/taoyao-meeting/src/main/java/com/acgist/taoyao/meeting/MeetingManager.java
similarity index 100%
rename from taoyao-meeting/src/main/java/com/acgist/taoyao/meeting/MeetingManager.java
rename to taoyao-signal/taoyao-meeting/src/main/java/com/acgist/taoyao/meeting/MeetingManager.java
diff --git a/taoyao-meeting/src/main/java/com/acgist/taoyao/meeting/controller/MeetingController.java b/taoyao-signal/taoyao-meeting/src/main/java/com/acgist/taoyao/meeting/controller/MeetingController.java
similarity index 100%
rename from taoyao-meeting/src/main/java/com/acgist/taoyao/meeting/controller/MeetingController.java
rename to taoyao-signal/taoyao-meeting/src/main/java/com/acgist/taoyao/meeting/controller/MeetingController.java
diff --git a/taoyao-meeting/src/main/java/com/acgist/taoyao/meeting/listener/MeetingCreateListener.java b/taoyao-signal/taoyao-meeting/src/main/java/com/acgist/taoyao/meeting/listener/MeetingCreateListener.java
similarity index 100%
rename from taoyao-meeting/src/main/java/com/acgist/taoyao/meeting/listener/MeetingCreateListener.java
rename to taoyao-signal/taoyao-meeting/src/main/java/com/acgist/taoyao/meeting/listener/MeetingCreateListener.java
diff --git a/taoyao-meeting/src/main/java/com/acgist/taoyao/meeting/listener/MeetingEnterListener.java b/taoyao-signal/taoyao-meeting/src/main/java/com/acgist/taoyao/meeting/listener/MeetingEnterListener.java
similarity index 100%
rename from taoyao-meeting/src/main/java/com/acgist/taoyao/meeting/listener/MeetingEnterListener.java
rename to taoyao-signal/taoyao-meeting/src/main/java/com/acgist/taoyao/meeting/listener/MeetingEnterListener.java
diff --git a/taoyao-node/README.md b/taoyao-signal/taoyao-node/README.md
similarity index 100%
rename from taoyao-node/README.md
rename to taoyao-signal/taoyao-node/README.md
diff --git a/taoyao-node/pom.xml b/taoyao-signal/taoyao-node/pom.xml
similarity index 100%
rename from taoyao-node/pom.xml
rename to taoyao-signal/taoyao-node/pom.xml
diff --git a/taoyao-signal/taoyao-node/src/main/java/com/acgist/taoyao/node/config/NodeAutoConfiguration.java b/taoyao-signal/taoyao-node/src/main/java/com/acgist/taoyao/node/config/NodeAutoConfiguration.java
new file mode 100644
index 0000000..ec87d00
--- /dev/null
+++ b/taoyao-signal/taoyao-node/src/main/java/com/acgist/taoyao/node/config/NodeAutoConfiguration.java
@@ -0,0 +1,45 @@
+package com.acgist.taoyao.node.config;
+
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * 集群自动配置
+ *
+ * @author acgist
+ */
+@Configuration
+@ConditionalOnProperty(prefix = "taoyao.node", name = "enabled", havingValue = "true", matchIfMissing = false)
+public class NodeAutoConfiguration {
+
+// @Bean
+// @ConditionalOnMissingBean
+// public MediaPublishListener mediaPublishListener() {
+// return new MediaPublishListener();
+// }
+//
+// @Bean
+// @ConditionalOnMissingBean
+// public MediaSubscribeListener mediaSubscribeListener() {
+// return new MediaSubscribeListener();
+// }
+//
+// @Bean
+// @ConditionalOnMissingBean
+// public MediaOfferListener mediaOfferListener() {
+// return new MediaOfferListener();
+// }
+//
+// @Bean
+// @ConditionalOnMissingBean
+// public MediaAnswerListener mediaAnswerListener() {
+// return new MediaAnswerListener();
+// }
+//
+// @Bean
+// @ConditionalOnMissingBean
+// public MediaCandidateListener mediaCandidateListener() {
+// return new MediaCandidateListener();
+// }
+
+}
diff --git a/taoyao-signal/taoyao-node/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/taoyao-signal/taoyao-node/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
new file mode 100644
index 0000000..6e84b07
--- /dev/null
+++ b/taoyao-signal/taoyao-node/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
@@ -0,0 +1 @@
+com.acgist.taoyao.node.config.NodeAutoConfiguration
\ No newline at end of file
diff --git a/taoyao-server/pom.xml b/taoyao-signal/taoyao-server/pom.xml
similarity index 100%
rename from taoyao-server/pom.xml
rename to taoyao-signal/taoyao-server/pom.xml
diff --git a/taoyao-server/src/main/java/com/acgist/taoyao/config/TaoyaoAutoConfiguration.java b/taoyao-signal/taoyao-server/src/main/java/com/acgist/taoyao/config/TaoyaoAutoConfiguration.java
similarity index 100%
rename from taoyao-server/src/main/java/com/acgist/taoyao/config/TaoyaoAutoConfiguration.java
rename to taoyao-signal/taoyao-server/src/main/java/com/acgist/taoyao/config/TaoyaoAutoConfiguration.java
diff --git a/taoyao-server/src/main/java/com/acgist/taoyao/controller/ConfigController.java b/taoyao-signal/taoyao-server/src/main/java/com/acgist/taoyao/controller/ConfigController.java
similarity index 100%
rename from taoyao-server/src/main/java/com/acgist/taoyao/controller/ConfigController.java
rename to taoyao-signal/taoyao-server/src/main/java/com/acgist/taoyao/controller/ConfigController.java
diff --git a/taoyao-server/src/main/java/com/acgist/taoyao/interceptor/SecurityInterceptor.java b/taoyao-signal/taoyao-server/src/main/java/com/acgist/taoyao/interceptor/SecurityInterceptor.java
similarity index 100%
rename from taoyao-server/src/main/java/com/acgist/taoyao/interceptor/SecurityInterceptor.java
rename to taoyao-signal/taoyao-server/src/main/java/com/acgist/taoyao/interceptor/SecurityInterceptor.java
diff --git a/taoyao-server/src/main/java/com/acgist/taoyao/interceptor/SlowInterceptor.java b/taoyao-signal/taoyao-server/src/main/java/com/acgist/taoyao/interceptor/SlowInterceptor.java
similarity index 100%
rename from taoyao-server/src/main/java/com/acgist/taoyao/interceptor/SlowInterceptor.java
rename to taoyao-signal/taoyao-server/src/main/java/com/acgist/taoyao/interceptor/SlowInterceptor.java
diff --git a/taoyao-server/src/main/java/com/acgist/taoyao/main/TaoyaoApplication.java b/taoyao-signal/taoyao-server/src/main/java/com/acgist/taoyao/main/TaoyaoApplication.java
similarity index 100%
rename from taoyao-server/src/main/java/com/acgist/taoyao/main/TaoyaoApplication.java
rename to taoyao-signal/taoyao-server/src/main/java/com/acgist/taoyao/main/TaoyaoApplication.java
diff --git a/taoyao-server/src/main/resources/application-dev.yml b/taoyao-signal/taoyao-server/src/main/resources/application-dev.yml
similarity index 100%
rename from taoyao-server/src/main/resources/application-dev.yml
rename to taoyao-signal/taoyao-server/src/main/resources/application-dev.yml
diff --git a/taoyao-server/src/main/resources/application-release.yml b/taoyao-signal/taoyao-server/src/main/resources/application-release.yml
similarity index 100%
rename from taoyao-server/src/main/resources/application-release.yml
rename to taoyao-signal/taoyao-server/src/main/resources/application-release.yml
diff --git a/taoyao-server/src/main/resources/application.yml b/taoyao-signal/taoyao-server/src/main/resources/application.yml
similarity index 100%
rename from taoyao-server/src/main/resources/application.yml
rename to taoyao-signal/taoyao-server/src/main/resources/application.yml
diff --git a/taoyao-server/src/main/resources/static/css/font.min.css b/taoyao-signal/taoyao-server/src/main/resources/static/css/font.min.css
similarity index 100%
rename from taoyao-server/src/main/resources/static/css/font.min.css
rename to taoyao-signal/taoyao-server/src/main/resources/static/css/font.min.css
diff --git a/taoyao-server/src/main/resources/static/css/style.css b/taoyao-signal/taoyao-server/src/main/resources/static/css/style.css
similarity index 100%
rename from taoyao-server/src/main/resources/static/css/style.css
rename to taoyao-signal/taoyao-server/src/main/resources/static/css/style.css
diff --git a/taoyao-server/src/main/resources/static/favicon.ico b/taoyao-signal/taoyao-server/src/main/resources/static/favicon.ico
similarity index 100%
rename from taoyao-server/src/main/resources/static/favicon.ico
rename to taoyao-signal/taoyao-server/src/main/resources/static/favicon.ico
diff --git a/taoyao-server/src/main/resources/static/fonts/taoyao.svg b/taoyao-signal/taoyao-server/src/main/resources/static/fonts/taoyao.svg
similarity index 100%
rename from taoyao-server/src/main/resources/static/fonts/taoyao.svg
rename to taoyao-signal/taoyao-server/src/main/resources/static/fonts/taoyao.svg
diff --git a/taoyao-server/src/main/resources/static/fonts/taoyao.ttf b/taoyao-signal/taoyao-server/src/main/resources/static/fonts/taoyao.ttf
similarity index 100%
rename from taoyao-server/src/main/resources/static/fonts/taoyao.ttf
rename to taoyao-signal/taoyao-server/src/main/resources/static/fonts/taoyao.ttf
diff --git a/taoyao-server/src/main/resources/static/fonts/taoyao.woff b/taoyao-signal/taoyao-server/src/main/resources/static/fonts/taoyao.woff
similarity index 100%
rename from taoyao-server/src/main/resources/static/fonts/taoyao.woff
rename to taoyao-signal/taoyao-server/src/main/resources/static/fonts/taoyao.woff
diff --git a/taoyao-server/src/main/resources/static/index.html b/taoyao-signal/taoyao-server/src/main/resources/static/index.html
similarity index 100%
rename from taoyao-server/src/main/resources/static/index.html
rename to taoyao-signal/taoyao-server/src/main/resources/static/index.html
diff --git a/taoyao-server/src/main/resources/static/javascript/taoyao.js b/taoyao-signal/taoyao-server/src/main/resources/static/javascript/taoyao.js
similarity index 100%
rename from taoyao-server/src/main/resources/static/javascript/taoyao.js
rename to taoyao-signal/taoyao-server/src/main/resources/static/javascript/taoyao.js
diff --git a/taoyao-server/src/main/resources/static/live.html b/taoyao-signal/taoyao-server/src/main/resources/static/live.html
similarity index 100%
rename from taoyao-server/src/main/resources/static/live.html
rename to taoyao-signal/taoyao-server/src/main/resources/static/live.html
diff --git a/taoyao-server/src/main/resources/static/meeting.html b/taoyao-signal/taoyao-server/src/main/resources/static/meeting.html
similarity index 100%
rename from taoyao-server/src/main/resources/static/meeting.html
rename to taoyao-signal/taoyao-server/src/main/resources/static/meeting.html
diff --git a/taoyao-server/src/main/resources/taoyao.jks b/taoyao-signal/taoyao-server/src/main/resources/taoyao.jks
similarity index 100%
rename from taoyao-server/src/main/resources/taoyao.jks
rename to taoyao-signal/taoyao-server/src/main/resources/taoyao.jks
diff --git a/taoyao-server/src/test/java/com/acgist/taoyao/annotation/CostedTest.java b/taoyao-signal/taoyao-server/src/test/java/com/acgist/taoyao/annotation/CostedTest.java
similarity index 100%
rename from taoyao-server/src/test/java/com/acgist/taoyao/annotation/CostedTest.java
rename to taoyao-signal/taoyao-server/src/test/java/com/acgist/taoyao/annotation/CostedTest.java
diff --git a/taoyao-server/src/test/java/com/acgist/taoyao/annotation/CostedTestTestExecutionListener.java b/taoyao-signal/taoyao-server/src/test/java/com/acgist/taoyao/annotation/CostedTestTestExecutionListener.java
similarity index 100%
rename from taoyao-server/src/test/java/com/acgist/taoyao/annotation/CostedTestTestExecutionListener.java
rename to taoyao-signal/taoyao-server/src/test/java/com/acgist/taoyao/annotation/CostedTestTestExecutionListener.java
diff --git a/taoyao-server/src/test/java/com/acgist/taoyao/annotation/TaoyaoTest.java b/taoyao-signal/taoyao-server/src/test/java/com/acgist/taoyao/annotation/TaoyaoTest.java
similarity index 100%
rename from taoyao-server/src/test/java/com/acgist/taoyao/annotation/TaoyaoTest.java
rename to taoyao-signal/taoyao-server/src/test/java/com/acgist/taoyao/annotation/TaoyaoTest.java
diff --git a/taoyao-server/src/test/java/com/acgist/taoyao/boot/service/IdServiceTest.java b/taoyao-signal/taoyao-server/src/test/java/com/acgist/taoyao/boot/service/IdServiceTest.java
similarity index 100%
rename from taoyao-server/src/test/java/com/acgist/taoyao/boot/service/IdServiceTest.java
rename to taoyao-signal/taoyao-server/src/test/java/com/acgist/taoyao/boot/service/IdServiceTest.java
diff --git a/taoyao-server/src/test/java/com/acgist/taoyao/main/TaoyaoApplicationTests.java b/taoyao-signal/taoyao-server/src/test/java/com/acgist/taoyao/main/TaoyaoApplicationTests.java
similarity index 100%
rename from taoyao-server/src/test/java/com/acgist/taoyao/main/TaoyaoApplicationTests.java
rename to taoyao-signal/taoyao-server/src/test/java/com/acgist/taoyao/main/TaoyaoApplicationTests.java
diff --git a/taoyao-server/src/test/java/com/acgist/taoyao/signal/SignalTest.java b/taoyao-signal/taoyao-server/src/test/java/com/acgist/taoyao/signal/SignalTest.java
similarity index 100%
rename from taoyao-server/src/test/java/com/acgist/taoyao/signal/SignalTest.java
rename to taoyao-signal/taoyao-server/src/test/java/com/acgist/taoyao/signal/SignalTest.java
diff --git a/taoyao-server/src/test/java/com/acgist/taoyao/signal/WebSocketClient.java b/taoyao-signal/taoyao-server/src/test/java/com/acgist/taoyao/signal/WebSocketClient.java
similarity index 100%
rename from taoyao-server/src/test/java/com/acgist/taoyao/signal/WebSocketClient.java
rename to taoyao-signal/taoyao-server/src/test/java/com/acgist/taoyao/signal/WebSocketClient.java
diff --git a/taoyao-server/src/test/java/com/acgist/taoyao/signal/protocol/ScriptProtocolTest.java b/taoyao-signal/taoyao-server/src/test/java/com/acgist/taoyao/signal/protocol/ScriptProtocolTest.java
similarity index 100%
rename from taoyao-server/src/test/java/com/acgist/taoyao/signal/protocol/ScriptProtocolTest.java
rename to taoyao-signal/taoyao-server/src/test/java/com/acgist/taoyao/signal/protocol/ScriptProtocolTest.java
diff --git a/taoyao-server/src/test/java/com/acgist/taoyao/signal/protocol/ShutdownProtocolTest.java b/taoyao-signal/taoyao-server/src/test/java/com/acgist/taoyao/signal/protocol/ShutdownProtocolTest.java
similarity index 100%
rename from taoyao-server/src/test/java/com/acgist/taoyao/signal/protocol/ShutdownProtocolTest.java
rename to taoyao-signal/taoyao-server/src/test/java/com/acgist/taoyao/signal/protocol/ShutdownProtocolTest.java
diff --git a/taoyao-signal/taoyao-signal/README.md b/taoyao-signal/taoyao-signal/README.md
new file mode 100644
index 0000000..004f1e7
--- /dev/null
+++ b/taoyao-signal/taoyao-signal/README.md
@@ -0,0 +1,402 @@
+# 信令
+
+## 信令格式
+
+```
+{
+ "header": {
+ "v": "版本",
+ "id": 请求标识,
+ "sn": "设备标识"
+ "pid": 信令标识,
+ },
+ "code": "响应编码",
+ "message": "响应描述",
+ "body": {
+ // 信令主体
+ }
+}
+```
+
+### 符号解释
+
+```
+-> 单播:定向传播信令
+-) 广播:广播信令(排除自己)
++) 全员广播:广播信令(包含自己)
+```
+
+## 平台信令(1000~1999)
+
+### 关闭服务信令(1000)
+
+#### 消息主体
+
+```
+# 请求
+{}
+# 广播
+{}
+```
+
+#### 消息流程:终端->服务端+)终端
+
+全员广播[关闭服务信令](#关闭服务信令1000),然后关闭信令服务。
+
+### 执行命令信令(1001)
+
+#### 消息主体
+
+```
+# 请求
+{
+ "script": "命令"
+}
+# 响应
+{
+ "result": "结果"
+}
+```
+
+#### 消息流程:终端->服务端->终端
+
+执行命令同时响应结果
+
+### 异常信令(1999)
+
+#### 消息主体
+
+```
+{}
+```
+
+## 终端信令(2000~2999)
+
+### 终端信息
+
+### 终端注册信令(2000)
+
+#### 消息主体
+
+```
+# 请求
+{
+ "username": "信令授权用户",
+ "password": "信令授权密码",
+ "ip": "IP地址",
+ "mac": "MAC地址",
+ "signal": "信号强度",
+ "battery": "电池电量"
+}
+# 响应
+{}
+# 广播
+{
+ "sn": "终端标识",
+ "ip": "IP地址",
+ "mac": "MAC地址",
+ "signal": "信号强度",
+ "battery": "电池电量"
+}
+```
+
+#### 消息流程:终端->服务端-)终端
+
+终端注册成功以后响应同时[下发配置信令](#下发配置信令2004),并且广播[终端上线信令](#终端上线信令2002)。
+
+### 终端关闭信令(2001)
+
+#### 消息主体
+
+```
+# 请求
+{}
+# 广播
+{
+ "sn": "终端标识"
+}
+```
+
+#### 消息流程:终端-)服务端
+
+终端关闭以后广播[终端下线信令](#终端下线信令2003),同时释放所有相关资源(信令通道、媒体通道等等)
+
+### 终端上线信令(2002)
+
+#### 消息主体
+
+```
+{
+ "sn": "终端标识"
+}
+```
+
+#### 消息流程:服务端->终端
+
+参考[终端注册信令](#终端注册信令2000)
+
+### 终端下线信令(2003)
+
+#### 消息主体
+
+```
+{
+ "sn": "终端标识"
+}
+```
+
+#### 消息流程:服务端->终端
+
+参考[终端关闭信令](#终端关闭信令2001)
+
+### 下发配置信令(2004)
+
+#### 消息主体
+
+```
+{
+ "time": "系统时间:yyyyMMddHHmmss",
+ "media": "媒体配置",
+ "webrtc": "WebRTC配置"
+}
+```
+
+#### 消息流程:服务端->终端
+
+参考[终端注册信令](#终端注册信令2000)
+
+### 心跳信令(2005)
+
+#### 消息主体
+
+```
+# 请求
+{
+ "signal": "信号强度",
+ "battery": "电池电量"
+}
+# 响应
+{}
+```
+
+#### 消息流程:终端->服务端->终端
+
+### 单播信令(2006)
+
+#### 消息主体
+
+```
+# 请求
+{
+ "to": "接收终端标识",
+ // 主体信息
+}
+# 转发
+{
+ // 主体信息
+}
+```
+
+#### 消息流程:终端->服务端->终端
+
+终端转发信令到指定的终端
+
+### 广播信令(2007)
+
+#### 消息主体
+
+```
+# 请求
+{
+ // 主体信息
+}
+# 广播
+{
+ // 主体信息
+}
+```
+
+#### 消息流程:终端->服务端-)终端
+
+终端广播信令到所有的终端
+
+### 重启终端信令(2997)
+
+#### 消息主体
+
+```
+# 请求
+{
+}
+```
+
+#### 消息流程:服务器->终端
+
+重启终端
+
+### 终端状态信令(2998)
+
+#### 消息主体
+
+```
+# 请求
+{
+ "sn": "终端标识"
+}
+# 响应
+{
+ "sn": "终端标识",
+ "ip": "IP地址",
+ "mac": "MAC地址",
+ "signal": "信号强度",
+ "battery": "电池电量"
+}
+```
+
+#### 消息流程:终端->服务端->终端
+
+响应指定终端状态(如果没有指定终端标识默认查询自己)
+
+### 终端列表信令(2999)
+
+#### 消息主体
+
+```
+# 请求
+{}
+# 响应
+[
+ {
+ "sn": "终端标识",
+ "ip": "IP地址",
+ "mac": "MAC地址",
+ "signal": "信号强度",
+ "battery": "电池电量"
+ },
+ ...
+]
+```
+
+#### 消息流程:终端->服务端->终端
+
+响应所有终端状态列表
+
+## 直播信令(3000~3999)
+
+### 开启直播信令(3000)
+
+### 关闭直播信令(3001)
+
+### 直播广播信令(3002)
+
+### 直播终端列表信令(3997)
+
+### 直播状态信令(3998)
+
+### 直播列表信令(3999)
+
+## 会议信令(4000~4999)
+
+### 创建会议信令(4000)
+
+#### 消息主体
+
+```
+{}
+----
+{
+ "id": "会议标识"
+}
+```
+
+#### 消息流程:终端->服务端+)终端
+
+### 关闭会议信令(4001)
+
+释放资源、广播广播
+
+### 进入会议信令(4002)
+
+#### 消息主体
+
+```
+# 请求
+{
+ "id": "会议标识"
+}
+# 广播
+{
+ "id": "会议标识",
+ "sn": "终端标识"
+}
+```
+
+#### 消息流程:终端->服务端-)终端
+
+终端进入会议,广播通知其他终端。
+
+### 离开会议信令(4003)
+
+广播
+
+### 邀请终端信令(4004)
+
+邀请终端进入会议,终端确认进入发送进入会议信令。
+
+### 踢出终端信令(4005)
+
+广播
+
+### 会议广播信令(4006)
+
+### 会议终端列表信令(4997)
+
+### 会议状态信令(4998)
+
+### 会议列表信令(4999)
+
+## 媒体信令(5000~5999)
+
+### 发布信令(5000)
+
+控制终端推流(服务端拉流)
+
+### 取消发布指令(5001)
+
+控制终端暂停推流(服务端取消拉流)
+
+### 订阅指令(5002)
+
+订阅终端媒体流(终端拉流)
+
+### 取消订阅指令(5003)
+
+取消订阅终端媒体流(终端取消拉流)
+
+### 暂停信令(5004)
+
+终端->服务端
+暂停发布、订阅(不关媒体流通道)
+Moon模式有效
+
+### 恢复信令(5005)
+
+终端->服务端
+暂停发布、订阅(不关媒体流通道)
+Moon模式有效
+
+### 开启录像信令(5006)
+
+### 停止录像信令(5007)
+
+### 配置媒体信令(5008)
+
+配置订阅媒体:码率、帧率、分辨率等等
+
+## 测试
+
+```
+let socket = new WebSocket("wss://localhost:8888/websocket.signal");
+socket.send('{"header":{"pid":2000,"v":"1.0.0","id":"1","sn":"taoyao"},"body":{"username":"taoyao","password":"taoyao"}}');
+socket.send('{"header":{"pid":1000,"v":"1.0.0","id":"1","sn":"taoyao"},"body":{}}');
+```
\ No newline at end of file
diff --git a/taoyao-webrtc/pom.xml b/taoyao-signal/taoyao-signal/pom.xml
similarity index 52%
rename from taoyao-webrtc/pom.xml
rename to taoyao-signal/taoyao-signal/pom.xml
index 8b7f4e0..49d3adb 100644
--- a/taoyao-webrtc/pom.xml
+++ b/taoyao-signal/taoyao-signal/pom.xml
@@ -10,22 +10,24 @@
1.0.0
- taoyao-webrtc
- pom
+ taoyao-signal
+ jar
- taoyao-webrtc
- WebRTC模块
-
-
- taoyao-webrtc-mesh
- taoyao-webrtc-moon
- taoyao-webrtc-kurento
-
+ taoyao-signal
+ 信令:信令服务com.acgist
- taoyao-signal
+ taoyao-boot
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+ org.springframework.boot
+ spring-boot-starter-websocket
diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/client/ClientSession.java b/taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/client/ClientSession.java
similarity index 100%
rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/client/ClientSession.java
rename to taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/client/ClientSession.java
diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/client/ClientSessionAdapter.java b/taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/client/ClientSessionAdapter.java
similarity index 100%
rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/client/ClientSessionAdapter.java
rename to taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/client/ClientSessionAdapter.java
diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/client/ClientSessionManager.java b/taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/client/ClientSessionManager.java
similarity index 100%
rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/client/ClientSessionManager.java
rename to taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/client/ClientSessionManager.java
diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/client/ClientSessionStatus.java b/taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/client/ClientSessionStatus.java
similarity index 100%
rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/client/ClientSessionStatus.java
rename to taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/client/ClientSessionStatus.java
diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/client/socket/SocketSession.java b/taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/client/socket/SocketSession.java
similarity index 100%
rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/client/socket/SocketSession.java
rename to taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/client/socket/SocketSession.java
diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/client/socket/SocketSignal.java b/taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/client/socket/SocketSignal.java
similarity index 100%
rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/client/socket/SocketSignal.java
rename to taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/client/socket/SocketSignal.java
diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/client/websocket/WebSocketSession.java b/taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/client/websocket/WebSocketSession.java
similarity index 100%
rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/client/websocket/WebSocketSession.java
rename to taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/client/websocket/WebSocketSession.java
diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/client/websocket/WebSocketSignal.java b/taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/client/websocket/WebSocketSignal.java
similarity index 100%
rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/client/websocket/WebSocketSignal.java
rename to taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/client/websocket/WebSocketSignal.java
diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/config/SignalAutoConfiguration.java b/taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/config/SignalAutoConfiguration.java
similarity index 100%
rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/config/SignalAutoConfiguration.java
rename to taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/config/SignalAutoConfiguration.java
diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/controller/ClientController.java b/taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/controller/ClientController.java
similarity index 100%
rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/controller/ClientController.java
rename to taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/controller/ClientController.java
diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/event/ApplicationEventAdapter.java b/taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/event/ApplicationEventAdapter.java
similarity index 100%
rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/event/ApplicationEventAdapter.java
rename to taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/event/ApplicationEventAdapter.java
diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/event/client/ClientCloseEvent.java b/taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/event/client/ClientCloseEvent.java
similarity index 100%
rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/event/client/ClientCloseEvent.java
rename to taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/event/client/ClientCloseEvent.java
diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/event/client/ClientRegisterEvent.java b/taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/event/client/ClientRegisterEvent.java
similarity index 100%
rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/event/client/ClientRegisterEvent.java
rename to taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/event/client/ClientRegisterEvent.java
diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/event/media/MediaAnswerEvent.java b/taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/event/media/MediaAnswerEvent.java
similarity index 100%
rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/event/media/MediaAnswerEvent.java
rename to taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/event/media/MediaAnswerEvent.java
diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/event/media/MediaCandidateEvent.java b/taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/event/media/MediaCandidateEvent.java
similarity index 100%
rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/event/media/MediaCandidateEvent.java
rename to taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/event/media/MediaCandidateEvent.java
diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/event/media/MediaOfferEvent.java b/taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/event/media/MediaOfferEvent.java
similarity index 100%
rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/event/media/MediaOfferEvent.java
rename to taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/event/media/MediaOfferEvent.java
diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/event/media/MediaPublishEvent.java b/taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/event/media/MediaPublishEvent.java
similarity index 100%
rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/event/media/MediaPublishEvent.java
rename to taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/event/media/MediaPublishEvent.java
diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/event/media/MediaSubscribeEvent.java b/taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/event/media/MediaSubscribeEvent.java
similarity index 100%
rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/event/media/MediaSubscribeEvent.java
rename to taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/event/media/MediaSubscribeEvent.java
diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/event/meeting/MeetingCreateEvent.java b/taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/event/meeting/MeetingCreateEvent.java
similarity index 100%
rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/event/meeting/MeetingCreateEvent.java
rename to taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/event/meeting/MeetingCreateEvent.java
diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/event/meeting/MeetingEnterEvent.java b/taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/event/meeting/MeetingEnterEvent.java
similarity index 100%
rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/event/meeting/MeetingEnterEvent.java
rename to taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/event/meeting/MeetingEnterEvent.java
diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/event/platform/ScriptEvent.java b/taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/event/platform/ScriptEvent.java
similarity index 100%
rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/event/platform/ScriptEvent.java
rename to taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/event/platform/ScriptEvent.java
diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/listener/ApplicationListenerAdapter.java b/taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/listener/ApplicationListenerAdapter.java
similarity index 100%
rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/listener/ApplicationListenerAdapter.java
rename to taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/listener/ApplicationListenerAdapter.java
diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/listener/MediaListenerAdapter.java b/taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/listener/MediaListenerAdapter.java
similarity index 100%
rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/listener/MediaListenerAdapter.java
rename to taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/listener/MediaListenerAdapter.java
diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/listener/client/ClientCloseListener.java b/taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/listener/client/ClientCloseListener.java
similarity index 100%
rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/listener/client/ClientCloseListener.java
rename to taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/listener/client/ClientCloseListener.java
diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/listener/client/ClientRegisterListener.java b/taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/listener/client/ClientRegisterListener.java
similarity index 100%
rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/listener/client/ClientRegisterListener.java
rename to taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/listener/client/ClientRegisterListener.java
diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/listener/platform/ScriptListener.java b/taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/listener/platform/ScriptListener.java
similarity index 100%
rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/listener/platform/ScriptListener.java
rename to taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/listener/platform/ScriptListener.java
diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/media/MediaRouterManager.java b/taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/media/MediaRouterManager.java
similarity index 100%
rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/media/MediaRouterManager.java
rename to taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/media/MediaRouterManager.java
diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/media/processor/MediaMixProcessor.java b/taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/media/processor/MediaMixProcessor.java
similarity index 100%
rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/media/processor/MediaMixProcessor.java
rename to taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/media/processor/MediaMixProcessor.java
diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/media/processor/MediaProcessor.java b/taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/media/processor/MediaProcessor.java
similarity index 100%
rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/media/processor/MediaProcessor.java
rename to taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/media/processor/MediaProcessor.java
diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/media/processor/ProcessorChain.java b/taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/media/processor/ProcessorChain.java
similarity index 100%
rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/media/processor/ProcessorChain.java
rename to taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/media/processor/ProcessorChain.java
diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/media/router/MediaPublisher.java b/taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/media/router/MediaPublisher.java
similarity index 100%
rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/media/router/MediaPublisher.java
rename to taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/media/router/MediaPublisher.java
diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/media/router/MediaRouter.java b/taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/media/router/MediaRouter.java
similarity index 100%
rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/media/router/MediaRouter.java
rename to taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/media/router/MediaRouter.java
diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/media/router/MediaRouterHandler.java b/taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/media/router/MediaRouterHandler.java
similarity index 100%
rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/media/router/MediaRouterHandler.java
rename to taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/media/router/MediaRouterHandler.java
diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/media/router/MediaSubscriber.java b/taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/media/router/MediaSubscriber.java
similarity index 100%
rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/media/router/MediaSubscriber.java
rename to taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/media/router/MediaSubscriber.java
diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/media/stream/MediaHandler.java b/taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/media/stream/MediaHandler.java
similarity index 100%
rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/media/stream/MediaHandler.java
rename to taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/media/stream/MediaHandler.java
diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/media/stream/MediaHandlerAdapter.java b/taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/media/stream/MediaHandlerAdapter.java
similarity index 100%
rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/media/stream/MediaHandlerAdapter.java
rename to taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/media/stream/MediaHandlerAdapter.java
diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/media/stream/MediaStream.java b/taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/media/stream/MediaStream.java
similarity index 100%
rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/media/stream/MediaStream.java
rename to taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/media/stream/MediaStream.java
diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/media/stream/MediaStreamAdapter.java b/taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/media/stream/MediaStreamAdapter.java
similarity index 100%
rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/media/stream/MediaStreamAdapter.java
rename to taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/media/stream/MediaStreamAdapter.java
diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/Protocol.java b/taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/Protocol.java
similarity index 100%
rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/Protocol.java
rename to taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/Protocol.java
diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/ProtocolAdapter.java b/taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/ProtocolAdapter.java
similarity index 100%
rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/ProtocolAdapter.java
rename to taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/ProtocolAdapter.java
diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/ProtocolJavaAdapter.java b/taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/ProtocolJavaAdapter.java
similarity index 100%
rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/ProtocolJavaAdapter.java
rename to taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/ProtocolJavaAdapter.java
diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/ProtocolManager.java b/taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/ProtocolManager.java
similarity index 100%
rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/ProtocolManager.java
rename to taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/ProtocolManager.java
diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/ProtocolMapAdapter.java b/taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/ProtocolMapAdapter.java
similarity index 100%
rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/ProtocolMapAdapter.java
rename to taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/ProtocolMapAdapter.java
diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/client/ClientBroadcastProtocol.java b/taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/client/ClientBroadcastProtocol.java
similarity index 100%
rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/client/ClientBroadcastProtocol.java
rename to taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/client/ClientBroadcastProtocol.java
diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/client/ClientCloseProtocol.java b/taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/client/ClientCloseProtocol.java
similarity index 100%
rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/client/ClientCloseProtocol.java
rename to taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/client/ClientCloseProtocol.java
diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/client/ClientConfigProtocol.java b/taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/client/ClientConfigProtocol.java
similarity index 100%
rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/client/ClientConfigProtocol.java
rename to taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/client/ClientConfigProtocol.java
diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/client/ClientHeartbeatProtocol.java b/taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/client/ClientHeartbeatProtocol.java
similarity index 100%
rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/client/ClientHeartbeatProtocol.java
rename to taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/client/ClientHeartbeatProtocol.java
diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/client/ClientListProtocol.java b/taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/client/ClientListProtocol.java
similarity index 100%
rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/client/ClientListProtocol.java
rename to taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/client/ClientListProtocol.java
diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/client/ClientOfflineProtocol.java b/taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/client/ClientOfflineProtocol.java
similarity index 100%
rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/client/ClientOfflineProtocol.java
rename to taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/client/ClientOfflineProtocol.java
diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/client/ClientOnlineProtocol.java b/taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/client/ClientOnlineProtocol.java
similarity index 100%
rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/client/ClientOnlineProtocol.java
rename to taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/client/ClientOnlineProtocol.java
diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/client/ClientRebootProtocol.java b/taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/client/ClientRebootProtocol.java
similarity index 100%
rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/client/ClientRebootProtocol.java
rename to taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/client/ClientRebootProtocol.java
diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/client/ClientRegisterProtocol.java b/taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/client/ClientRegisterProtocol.java
similarity index 100%
rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/client/ClientRegisterProtocol.java
rename to taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/client/ClientRegisterProtocol.java
diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/client/ClientStatusProtocol.java b/taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/client/ClientStatusProtocol.java
similarity index 100%
rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/client/ClientStatusProtocol.java
rename to taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/client/ClientStatusProtocol.java
diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/client/ClientUnicastProtocol.java b/taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/client/ClientUnicastProtocol.java
similarity index 100%
rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/client/ClientUnicastProtocol.java
rename to taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/client/ClientUnicastProtocol.java
diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/live/LiveClientListProtocol.java b/taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/live/LiveClientListProtocol.java
similarity index 100%
rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/live/LiveClientListProtocol.java
rename to taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/live/LiveClientListProtocol.java
diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/live/LiveCloseProtocol.java b/taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/live/LiveCloseProtocol.java
similarity index 100%
rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/live/LiveCloseProtocol.java
rename to taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/live/LiveCloseProtocol.java
diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/live/LiveListProtocol.java b/taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/live/LiveListProtocol.java
similarity index 100%
rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/live/LiveListProtocol.java
rename to taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/live/LiveListProtocol.java
diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/live/LiveRegisterProtocol.java b/taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/live/LiveRegisterProtocol.java
similarity index 100%
rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/live/LiveRegisterProtocol.java
rename to taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/live/LiveRegisterProtocol.java
diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/live/LiveStatusProtocol.java b/taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/live/LiveStatusProtocol.java
similarity index 100%
rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/live/LiveStatusProtocol.java
rename to taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/live/LiveStatusProtocol.java
diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaAnswerProtocol.java b/taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaAnswerProtocol.java
similarity index 100%
rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaAnswerProtocol.java
rename to taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaAnswerProtocol.java
diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaCandidateProtocol.java b/taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaCandidateProtocol.java
similarity index 100%
rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaCandidateProtocol.java
rename to taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaCandidateProtocol.java
diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaOfferProtocol.java b/taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaOfferProtocol.java
similarity index 100%
rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaOfferProtocol.java
rename to taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaOfferProtocol.java
diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaPauseProtocol.java b/taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaPauseProtocol.java
similarity index 100%
rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaPauseProtocol.java
rename to taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaPauseProtocol.java
diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaPublishProtocol.java b/taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaPublishProtocol.java
similarity index 100%
rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaPublishProtocol.java
rename to taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaPublishProtocol.java
diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaResumeProtocol.java b/taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaResumeProtocol.java
similarity index 100%
rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaResumeProtocol.java
rename to taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaResumeProtocol.java
diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaStartRecordProtocol.java b/taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaStartRecordProtocol.java
similarity index 100%
rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaStartRecordProtocol.java
rename to taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaStartRecordProtocol.java
diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaStopRecordProtocol.java b/taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaStopRecordProtocol.java
similarity index 100%
rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaStopRecordProtocol.java
rename to taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaStopRecordProtocol.java
diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaSubscribeProtocol.java b/taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaSubscribeProtocol.java
similarity index 100%
rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaSubscribeProtocol.java
rename to taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaSubscribeProtocol.java
diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaUnpublishProtocol.java b/taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaUnpublishProtocol.java
similarity index 100%
rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaUnpublishProtocol.java
rename to taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaUnpublishProtocol.java
diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaUnsubscribeProtocol.java b/taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaUnsubscribeProtocol.java
similarity index 100%
rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaUnsubscribeProtocol.java
rename to taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/media/MediaUnsubscribeProtocol.java
diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/meeting/MeetingClientListProtocol.java b/taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/meeting/MeetingClientListProtocol.java
similarity index 100%
rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/meeting/MeetingClientListProtocol.java
rename to taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/meeting/MeetingClientListProtocol.java
diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/meeting/MeetingCloseProtocol.java b/taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/meeting/MeetingCloseProtocol.java
similarity index 100%
rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/meeting/MeetingCloseProtocol.java
rename to taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/meeting/MeetingCloseProtocol.java
diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/meeting/MeetingCreateProtocol.java b/taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/meeting/MeetingCreateProtocol.java
similarity index 100%
rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/meeting/MeetingCreateProtocol.java
rename to taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/meeting/MeetingCreateProtocol.java
diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/meeting/MeetingEnterProtocol.java b/taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/meeting/MeetingEnterProtocol.java
similarity index 100%
rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/meeting/MeetingEnterProtocol.java
rename to taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/meeting/MeetingEnterProtocol.java
diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/meeting/MeetingExpelProtocol.java b/taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/meeting/MeetingExpelProtocol.java
similarity index 100%
rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/meeting/MeetingExpelProtocol.java
rename to taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/meeting/MeetingExpelProtocol.java
diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/meeting/MeetingInviteProtocol.java b/taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/meeting/MeetingInviteProtocol.java
similarity index 100%
rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/meeting/MeetingInviteProtocol.java
rename to taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/meeting/MeetingInviteProtocol.java
diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/meeting/MeetingLeaveProtocol.java b/taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/meeting/MeetingLeaveProtocol.java
similarity index 100%
rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/meeting/MeetingLeaveProtocol.java
rename to taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/meeting/MeetingLeaveProtocol.java
diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/meeting/MeetingListProtocol.java b/taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/meeting/MeetingListProtocol.java
similarity index 100%
rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/meeting/MeetingListProtocol.java
rename to taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/meeting/MeetingListProtocol.java
diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/meeting/MeetingStatusProtocol.java b/taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/meeting/MeetingStatusProtocol.java
similarity index 100%
rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/meeting/MeetingStatusProtocol.java
rename to taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/meeting/MeetingStatusProtocol.java
diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/platform/ErrorProtocol.java b/taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/platform/ErrorProtocol.java
similarity index 100%
rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/platform/ErrorProtocol.java
rename to taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/platform/ErrorProtocol.java
diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/platform/ScriptProtocol.java b/taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/platform/ScriptProtocol.java
similarity index 100%
rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/platform/ScriptProtocol.java
rename to taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/platform/ScriptProtocol.java
diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/platform/ShutdownProtocol.java b/taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/platform/ShutdownProtocol.java
similarity index 100%
rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/platform/ShutdownProtocol.java
rename to taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/protocol/platform/ShutdownProtocol.java
diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/service/SecurityService.java b/taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/service/SecurityService.java
similarity index 100%
rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/service/SecurityService.java
rename to taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/service/SecurityService.java
diff --git a/taoyao-signal/src/main/java/com/acgist/taoyao/signal/service/impl/SecurityServiceImpl.java b/taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/service/impl/SecurityServiceImpl.java
similarity index 100%
rename from taoyao-signal/src/main/java/com/acgist/taoyao/signal/service/impl/SecurityServiceImpl.java
rename to taoyao-signal/taoyao-signal/src/main/java/com/acgist/taoyao/signal/service/impl/SecurityServiceImpl.java
diff --git a/taoyao-signal/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/taoyao-signal/taoyao-signal/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
similarity index 100%
rename from taoyao-signal/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
rename to taoyao-signal/taoyao-signal/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
diff --git a/taoyao-webrtc/taoyao-webrtc-kurento/README.md b/taoyao-webrtc/taoyao-webrtc-kurento/README.md
deleted file mode 100644
index e69de29..0000000
diff --git a/taoyao-webrtc/taoyao-webrtc-kurento/pom.xml b/taoyao-webrtc/taoyao-webrtc-kurento/pom.xml
deleted file mode 100644
index e823445..0000000
--- a/taoyao-webrtc/taoyao-webrtc-kurento/pom.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
- 4.0.0
-
-
- com.acgist
- taoyao-webrtc
- 1.0.0
-
-
- taoyao-webrtc-kurento
- jar
-
- taoyao-webrtc-kurento
- WebRTC协议簇实现:kurento
-
-
-
- org.kurento
- kurento-client
-
-
-
-
\ No newline at end of file
diff --git a/taoyao-webrtc/taoyao-webrtc-mesh/pom.xml b/taoyao-webrtc/taoyao-webrtc-mesh/pom.xml
deleted file mode 100644
index 9f1d49e..0000000
--- a/taoyao-webrtc/taoyao-webrtc-mesh/pom.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-
-
-
-
- 4.0.0
-
-
- com.acgist
- taoyao-webrtc
- 1.0.0
-
-
- taoyao-webrtc-mesh
- jar
-
- taoyao-webrtc-mesh
- WebRTC Mesh架构实现
-
-
-
-
\ No newline at end of file
diff --git a/taoyao-webrtc/taoyao-webrtc-mesh/src/main/java/com/acgist/taoyao/webrtc/mesh/config/MeshAutoConfiguration.java b/taoyao-webrtc/taoyao-webrtc-mesh/src/main/java/com/acgist/taoyao/webrtc/mesh/config/MeshAutoConfiguration.java
deleted file mode 100644
index c86db44..0000000
--- a/taoyao-webrtc/taoyao-webrtc-mesh/src/main/java/com/acgist/taoyao/webrtc/mesh/config/MeshAutoConfiguration.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package com.acgist.taoyao.webrtc.mesh.config;
-
-import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-import com.acgist.taoyao.webrtc.mesh.listener.MediaAnswerListener;
-import com.acgist.taoyao.webrtc.mesh.listener.MediaCandidateListener;
-import com.acgist.taoyao.webrtc.mesh.listener.MediaOfferListener;
-import com.acgist.taoyao.webrtc.mesh.listener.MediaPublishListener;
-import com.acgist.taoyao.webrtc.mesh.listener.MediaSubscribeListener;
-
-/**
- * Mesh自动配置
- *
- * @author acgist
- */
-@Configuration
-@ConditionalOnProperty(prefix = "taoyao.webrtc", name = "framework", havingValue = "MESH", matchIfMissing = false)
-public class MeshAutoConfiguration {
-
- @Bean
- @ConditionalOnMissingBean
- public MediaPublishListener mediaPublishListener() {
- return new MediaPublishListener();
- }
-
- @Bean
- @ConditionalOnMissingBean
- public MediaSubscribeListener mediaSubscribeListener() {
- return new MediaSubscribeListener();
- }
-
- @Bean
- @ConditionalOnMissingBean
- public MediaOfferListener mediaOfferListener() {
- return new MediaOfferListener();
- }
-
- @Bean
- @ConditionalOnMissingBean
- public MediaAnswerListener mediaAnswerListener() {
- return new MediaAnswerListener();
- }
-
- @Bean
- @ConditionalOnMissingBean
- public MediaCandidateListener mediaCandidateListener() {
- return new MediaCandidateListener();
- }
-
-}
diff --git a/taoyao-webrtc/taoyao-webrtc-mesh/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/taoyao-webrtc/taoyao-webrtc-mesh/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
deleted file mode 100644
index 65458e5..0000000
--- a/taoyao-webrtc/taoyao-webrtc-mesh/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
+++ /dev/null
@@ -1 +0,0 @@
-com.acgist.taoyao.webrtc.mesh.config.MeshAutoConfiguration
\ No newline at end of file
diff --git a/taoyao-webrtc/taoyao-webrtc-moon/pom.xml b/taoyao-webrtc/taoyao-webrtc-moon/pom.xml
deleted file mode 100644
index 83161e4..0000000
--- a/taoyao-webrtc/taoyao-webrtc-moon/pom.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
- 4.0.0
-
-
- com.acgist
- taoyao-webrtc
- 1.0.0
-
-
- taoyao-webrtc-moon
- jar
-
- taoyao-webrtc-moon
- WebRTC Moon架构实现
-
-
-
- com.acgist
- taoyao-webrtc-kurento
-
-
-
-
\ No newline at end of file
diff --git a/taoyao-webrtc/taoyao-webrtc-moon/src/main/java/com/acgist/taoyao/webrtc/moon/config/MoonAutoConfiguration.java b/taoyao-webrtc/taoyao-webrtc-moon/src/main/java/com/acgist/taoyao/webrtc/moon/config/MoonAutoConfiguration.java
deleted file mode 100644
index 6592c89..0000000
--- a/taoyao-webrtc/taoyao-webrtc-moon/src/main/java/com/acgist/taoyao/webrtc/moon/config/MoonAutoConfiguration.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package com.acgist.taoyao.webrtc.moon.config;
-
-import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
-import org.springframework.context.annotation.Configuration;
-
-/**
- * MOON自动配置
- *
- * @author acgist
- */
-@Configuration
-@ConditionalOnProperty(prefix = "taoyao.webrtc", name = "framework", havingValue = "MOON", matchIfMissing = false)
-public class MoonAutoConfiguration {
-
-}
diff --git a/taoyao-webrtc/taoyao-webrtc-moon/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/taoyao-webrtc/taoyao-webrtc-moon/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
deleted file mode 100644
index 9292344..0000000
--- a/taoyao-webrtc/taoyao-webrtc-moon/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
+++ /dev/null
@@ -1 +0,0 @@
-com.acgist.taoyao.webrtc.moon.config.MoonAutoConfiguration
\ No newline at end of file