Skip to content

Latest commit

 

History

History
91 lines (55 loc) · 4.61 KB

File metadata and controls

91 lines (55 loc) · 4.61 KB
graph LR
    Client_Server_SDKs["Client/Server SDKs"]
    Client_Configuration_Module["Client Configuration Module"]
    Authentication_Module["Authentication Module"]
    Webhook_Module["Webhook Module"]
    API_Gateway_Control_Plane["API Gateway/Control Plane"]
    Core_Media_Server_SFU_["Core Media Server (SFU)"]
    Authentication_Module -- "is a foundational dependency for" --> Client_Server_SDKs
    Client_Configuration_Module -- "is specific to client setup for" --> Client_Server_SDKs
    Webhook_Module -- "is for server-side event consumption by" --> Client_Server_SDKs
    Client_Server_SDKs -- "interacts with (secure connections & API calls)" --> API_Gateway_Control_Plane
    API_Gateway_Control_Plane -- "sends event notifications to (via webhooks)" --> Client_Server_SDKs
    Client_Server_SDKs -- "connects to" --> Core_Media_Server_SFU_
    API_Gateway_Control_Plane -- "signals and manages" --> Core_Media_Server_SFU_
    click Client_Server_SDKs href "https://github.com/CodeBoarding/GeneratedOnBoardings/blob/main/livekit/Client_Server_SDKs.md" "Details"
    click API_Gateway_Control_Plane href "https://github.com/CodeBoarding/GeneratedOnBoardings/blob/main/livekit/API_Gateway_Control_Plane.md" "Details"
    click Core_Media_Server_SFU_ href "https://github.com/CodeBoarding/GeneratedOnBoardings/blob/main/livekit/Core_Media_Server_SFU_.md" "Details"
Loading

CodeBoardingDemoContact

Details

The LiveKit project is a robust WebRTC server designed for real-time communication, enabling seamless management of rooms, participants, and media streams. Its architecture is centered around a control plane that handles API interactions and authentication, and a media server (SFU) dedicated to efficient real-time media forwarding. Client and server SDKs interact with these core components to establish connections, manage sessions, and process events, abstracting the underlying complexities of WebRTC.

Client/Server SDKs [Expand]

This component provides the necessary interfaces and abstractions for client applications (e.g., web, mobile, desktop) to connect to LiveKit rooms, manage media streams, and handle real-time events, abstracting the complexities of WebRTC. Concurrently, it offers server-side interfaces for administrative tasks, such as generating access tokens, managing rooms and participants via APIs, and processing platform webhooks.

Related Classes/Methods:

  • pkg/clientconfiguration/conf.go
  • pkg/service/auth.go
  • pkg/service/server.go

Client Configuration Module

Manages client-side settings and initial connection parameters, providing a structured way for client applications to configure their interaction with the LiveKit platform.

Related Classes/Methods:

  • pkg/clientconfiguration/conf.go

Authentication Module

Crucial for security, this module handles the generation and validation of access tokens (JWTs) for both client and server applications, ensuring secure and authorized access to LiveKit services.

Related Classes/Methods:

  • pkg/service/auth.go

Webhook Module

Facilitates server-side applications in securely receiving and processing asynchronous event notifications (webhooks) from the LiveKit platform, enabling real-time reactions to platform events.

Related Classes/Methods:

  • pkg/service/server.go

API Gateway/Control Plane [Expand]

Handles API requests, manages authentication, and sends event notifications to other components. It acts as the central point for all client and server SDK interactions with the LiveKit backend for administrative and signaling purposes.

Related Classes/Methods:

  • cmd/server/main.go
  • pkg/service/server.go
  • pkg/service/twirp.go
  • pkg/service/roomservice.go
  • pkg/service/auth.go

Core Media Server (SFU) [Expand]

Manages real-time media streaming (publishing and subscribing to audio/video tracks). It is responsible for efficiently forwarding media streams between participants in a room without mixing them, optimizing bandwidth and processing.

Related Classes/Methods:

  • pkg/sfu/sfu.go
  • pkg/rtc/room.go
  • pkg/rtc/mediatrack.go