Files
taoyao/docs/WebRTC.iuml
acgist 50f80bee2d [*]
2023-02-08 21:31:09 +08:00

74 lines
1.6 KiB
Plaintext

@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