Files
Final-Year-Project/docs/temp-section-5-3-diagrams/5.3.6-stream-sessions-and-signalling.md

47 lines
1.4 KiB
Markdown

# 5.3.6 Stream Sessions and Signalling
## Stream Request and WebRTC Signalling Sequence
```mermaid
sequenceDiagram
autonumber
participant Client as Client Browser
participant Backend as Backend /streams
participant Links as device_links
participant Session as stream_sessions
participant Camera as Camera Browser
participant RT as Socket.IO Relay
Client->>Backend: POST /streams/request
Backend->>Links: verify active camera-client link
Backend->>Session: insert requested session
Backend->>Camera: emit stream:requested
Camera->>Backend: POST /streams/:id/accept
Backend->>Session: update status to streaming
Backend->>Client: emit stream:started
Camera->>RT: webrtc:signal offer
RT->>Client: relay offer
Client->>RT: webrtc:signal answer
RT->>Camera: relay answer
Client->>RT: ICE candidates
RT->>Camera: relay ICE candidates
Camera->>RT: ICE candidates
RT->>Client: relay ICE candidates
```
## Stream Session State Diagram
```mermaid
stateDiagram-v2
[*] --> requested
requested --> streaming: camera accepts
requested --> cancelled: requester cancels
requested --> failed: validation or delivery failure
streaming --> completed: normal end
streaming --> cancelled: manual stop
streaming --> failed: connection or upload failure
completed --> [*]
cancelled --> [*]
failed --> [*]
```