Skip to content

Latest commit

 

History

History
51 lines (38 loc) · 1.72 KB

File metadata and controls

51 lines (38 loc) · 1.72 KB

1. LiveKit 的房间管理器 (RoomManager)

LiveKit Server 通过房间管理器 (RoomManager) 管理服务器上的所有房间 (Room),包括房间的创建、搜索、关闭等。

1.1 房间管理器 (RoomManager) 类的定义

房间管理器 (RoomManager) 类在源文件 pkg/service/roommanager.go 中定义,代码如下所示:

// RoomManager manages rooms and its interaction with participants.
// It's responsible for creating, deleting rooms, as well as running sessions for participants
type RoomManager struct {
    lock sync.RWMutex

    config            *config.Config
    rtcConfig         *rtc.WebRTCConfig
    serverInfo        *livekit.ServerInfo
    currentNode       routing.LocalNode
    router            routing.Router
    roomStore         ObjectStore
    telemetry         telemetry.TelemetryService
    clientConfManager clientconfiguration.ClientConfigurationManager
    agentClient       rtc.AgentClient
    egressLauncher    rtc.EgressLauncher
    versionGenerator  utils.TimedVersionGenerator
    turnAuthHandler   *TURNAuthHandler
    bus               psrpc.MessageBus

    rooms map[livekit.RoomName]*rtc.Room

    roomServers        utils.MultitonService[rpc.RoomTopic]
    participantServers utils.MultitonService[rpc.ParticipantTopic]

    iceConfigCache map[livekit.ParticipantIdentity]*iceConfigCacheEntry
}

RoomManager 用字典 map[] 管理服务器中的房间,以房间名 livekit.RoomName 作为 key 值检索管理的 Room。

    rooms map[livekit.RoomName]*rtc.Room

1.2. 创建房间管理器

房间管理器在 livekit-server 启动的时候创建,其调用流程如下:

graph LR
    main-->startServer-->service.InitializeServer-->NewLocalRoomManager
Loading