This commit is contained in:
acgist
2022-11-23 08:43:57 +08:00
parent 8a19192f1d
commit 46130cc15b
69 changed files with 629 additions and 218 deletions

View File

@@ -172,3 +172,4 @@ https://blog.csdn.net/ababab12345/article/details/115585378
https://blog.csdn.net/jisuanji111111/article/details/121634199
https://blog.csdn.net/weixin_48638578/article/details/120191152
https://blog.csdn.net/weixin_45565568/article/details/108929438
https://lequ7.com/guan-yu-webrtc-yi-wen-xiang-jie-webrtc-ji-chu.html

View File

@@ -1,33 +0,0 @@
# 流程
## WebRTC流程
发起响应
## SFU流程
媒体流
## MCU流程
媒体流
## Mesh流程
媒体流
## 直播流程
创建直播,终端操作。
## 会议流程
创建会议,终端操作
## 终端流程
注册下线
## 媒体控制
拉流发布

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

36
docs/sequence/Client.iuml Normal file
View File

@@ -0,0 +1,36 @@
@startuml
title Client
actor ClientA as ClientA
participant "Signal" as Signal
actor ClientB as ClientB
actor ClientC as ClientC
autonumber
ClientA -> Signal: 注册
activate ClientA
activate Signal
Signal --> ClientA: 注册成功
Signal -> ClientA: 下发配置
Signal -> ClientB: ClientA上线
Signal -> ClientC: ClientA上线
loop 直到关闭
ClientA -> Signal: 心跳
Signal --> ClientA: 心跳
end
deactivate Signal
deactivate ClientA
ClientA -> Signal: 关闭
activate Signal
activate ClientA
Signal -> ClientA: 关闭ClientA通道
deactivate ClientA
Signal -> ClientB: ClientA下线
Signal -> ClientC: ClientA下线
Signal -> Signal: 释放ClientA资源直播、会议、媒体
deactivate Signal
@enduml

BIN
docs/sequence/Client.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

32
docs/sequence/Live.iuml Normal file
View File

@@ -0,0 +1,32 @@
@startuml
title WebRTC-Mesh
actor ClientA as ClientA
participant "Signal" as Signal
actor ClientB as ClientB
actor ClientC as ClientC
autonumber
ClientA -> Signal: 进入房间
activate ClientA
activate Signal
Signal -> ClientB: ClientA进入房间
activate ClientB
ClientB -> Signal: 订阅ClientA
Signal -> ClientA: ClientB订阅ClientA
ClientA -> Signal: ClientA发布ClientB
Signal -> ClientB: ClientA发布
deactivate ClientB
Signal -> ClientC: ClientA进入房间
activate ClientC
ClientC -> Signal: 订阅ClientA
Signal -> ClientA: ClientC订阅ClientA
ClientA -> Signal: ClientA发布ClientC
Signal -> ClientC: ClientA发布
deactivate ClientC
deactivate Signal
deactivate ClientA
@enduml

32
docs/sequence/MCU.iuml Normal file
View File

@@ -0,0 +1,32 @@
@startuml
title WebRTC-Mesh
actor ClientA as ClientA
participant "Signal" as Signal
actor ClientB as ClientB
actor ClientC as ClientC
autonumber
ClientA -> Signal: 进入房间
activate ClientA
activate Signal
Signal -> ClientB: ClientA进入房间
activate ClientB
ClientB -> Signal: 订阅ClientA
Signal -> ClientA: ClientB订阅ClientA
ClientA -> Signal: ClientA发布ClientB
Signal -> ClientB: ClientA发布
deactivate ClientB
Signal -> ClientC: ClientA进入房间
activate ClientC
ClientC -> Signal: 订阅ClientA
Signal -> ClientA: ClientC订阅ClientA
ClientA -> Signal: ClientA发布ClientC
Signal -> ClientC: ClientA发布
deactivate ClientC
deactivate Signal
deactivate ClientA
@enduml

32
docs/sequence/Media.iuml Normal file
View File

@@ -0,0 +1,32 @@
@startuml
title WebRTC-Mesh
actor ClientA as ClientA
participant "Signal" as Signal
actor ClientB as ClientB
actor ClientC as ClientC
autonumber
ClientA -> Signal: 进入房间
activate ClientA
activate Signal
Signal -> ClientB: ClientA进入房间
activate ClientB
ClientB -> Signal: 订阅ClientA
Signal -> ClientA: ClientB订阅ClientA
ClientA -> Signal: ClientA发布ClientB
Signal -> ClientB: ClientA发布
deactivate ClientB
Signal -> ClientC: ClientA进入房间
activate ClientC
ClientC -> Signal: 订阅ClientA
Signal -> ClientA: ClientC订阅ClientA
ClientA -> Signal: ClientA发布ClientC
Signal -> ClientC: ClientA发布
deactivate ClientC
deactivate Signal
deactivate ClientA
@enduml

View File

@@ -0,0 +1,29 @@
@startuml
title Meeting
actor ClientA as ClientA
participant "Signal" as Signal
participant "Media" as Media
actor ClientB as ClientB
actor ClientC as ClientC
autonumber
ClientA -> Signal: 创建会议
activate Signal
activate ClientA
Signal -> ClientA: 创建会议
deactivate ClientA
Signal -> ClientB: 创建会议
Signal -> ClientC: 创建会议
deactivate Signal
ClientA -> Signal: 进入会议
activate Signal
Signal -> ClientB: ClientA进入会议
Signal -> ClientC: ClientA进入会议
deactivate Signal
@enduml

34
docs/sequence/Mesh.iuml Normal file
View File

@@ -0,0 +1,34 @@
@startuml
title WebRTC-Mesh
actor ClientA as ClientA
participant "Signal" as Signal
actor ClientB as ClientB
actor ClientC as ClientC
autonumber
ClientA -> Signal: 进入房间
activate ClientA
activate Signal
Signal -> ClientB: ClientA进入房间
activate ClientB
ClientB -> Signal: 订阅ClientA
Signal -> ClientA: ClientB订阅ClientA
ClientA --> Signal: ClientA发布ClientB
Signal --> ClientB: ClientA发布
deactivate ClientB
Signal -> ClientC: ClientA进入房间
activate ClientC
ClientC -> Signal: 订阅ClientA
Signal -> ClientA: ClientC订阅ClientA
ClientA --> Signal: ClientA发布ClientC
Signal --> ClientC: ClientA发布
deactivate ClientC
deactivate Signal
deactivate ClientA
@enduml

32
docs/sequence/SFU.iuml Normal file
View File

@@ -0,0 +1,32 @@
@startuml
title WebRTC-Mesh
actor ClientA as ClientA
participant "Signal" as Signal
actor ClientB as ClientB
actor ClientC as ClientC
autonumber
ClientA -> Signal: 进入房间
activate ClientA
activate Signal
Signal -> ClientB: ClientA进入房间
activate ClientB
ClientB -> Signal: 订阅ClientA
Signal -> ClientA: ClientB订阅ClientA
ClientA -> Signal: ClientA发布ClientB
Signal -> ClientB: ClientA发布
deactivate ClientB
Signal -> ClientC: ClientA进入房间
activate ClientC
ClientC -> Signal: 订阅ClientA
Signal -> ClientA: ClientC订阅ClientA
ClientA -> Signal: ClientA发布ClientC
Signal -> ClientC: ClientA发布
deactivate ClientC
deactivate Signal
deactivate ClientA
@enduml

74
docs/sequence/WebRTC.iuml Normal file
View File

@@ -0,0 +1,74 @@
@startuml
title WebRTC
actor ClientA as ClientA
participant "Signal" as Signal
participant "Stun" as Stun
actor ClientB as ClientB
autonumber
ClientA -> Signal: Connect
activate Signal
ClientB -> Signal: Connect
deactivate Signal
ClientA -> ClientA: new PeerConnection
activate ClientA
ClientA -> ClientA: addStream
deactivate ClientA
ClientB -> ClientB: new PeerConnection
activate ClientB
ClientB -> ClientB: addStream
deactivate ClientB
ClientA -> ClientA: createOffer & setLocalDescription
activate ClientA
ClientA -> Signal: Send Offer SDP
activate Signal
Signal -> ClientB: Relay Offer SDP
activate ClientB
ClientB -> ClientB: setRemoteDescription
ClientB -> ClientB: createAnswer & setLocalDescription
ClientB --> Signal: Send Answer SDP
deactivate ClientB
Signal --> ClientA: Relay Answer SDP
deactivate Signal
ClientA -> ClientA: setRemoteDescription
deactivate ClientA
ClientA -> Stun: ICE Request
activate ClientA
activate Stun
Stun --> ClientA: onicecandidate
deactivate Stun
ClientA -> Signal: Send ICE Candidate
activate Signal
Signal -> ClientB: Relay ICE Candidate
activate ClientB
ClientB -> ClientB: addIceCandidate
ClientB -> Stun: ICE Request
activate Stun
Stun --> ClientB: onicecandidate
deactivate Stun
ClientB--> Signal: Send ICE Candidate
deactivate ClientB
Signal --> ClientA: Relay ICE Candidate
deactivate Signal
ClientA -> ClientA: addIceCandidate
deactivate ClientA
ClientA <-> ClientB: Media
activate ClientA
activate ClientB
ClientA -> ClientA: onaddstream
ClientB -> ClientB: onaddstream
ClientA -> ClientA: onremovestream
ClientB -> ClientB: onremovestream
ClientA <-> ClientB: Media
deactivate ClientA
deactivate ClientB
@enduml

BIN
docs/sequence/WebRTC.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

BIN
docs/桃夭.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 111 KiB