CLAUDE.md 3.0 KB

Room 模块

模块概述

Room 模块提供统一的房间信令管理功能,封装了不同RTC厂商的房间管理逻辑,提供统一的房间状态管理、用户管理、消息传递等功能。

主要功能

1. 房间管理

  • 房间生命周期: 创建、加入、离开房间
  • 房间状态管理: 房间连接状态监控
  • 房间信息: 房间属性和配置管理
  • 多房间支持: 同时管理多个房间连接

2. 用户管理

  • 用户列表: 房间内用户列表管理
  • 用户状态: 用户在线状态和媒体状态
  • 用户权限: 用户角色和权限控制
  • 用户属性: 自定义用户属性管理

3. 信令传输

  • 实时消息: 房间内实时消息传递
  • 自定义信令: 业务自定义信令支持
  • 消息可靠性: 消息传输可靠性保证
  • 广播消息: 房间广播和点对点消息

4. 事件通知

  • 房间事件: 房间状态变化通知
  • 用户事件: 用户进出房间通知
  • 媒体事件: 音视频状态变化通知
  • 自定义事件: 业务自定义事件通知

核心接口

interface RoomService {
    fun createRoom(roomId: String, roomConfig: RoomConfig): Room
    fun joinRoom(roomId: String, userInfo: UserInfo): Boolean
    fun leaveRoom(roomId: String)
    fun sendMessage(roomId: String, message: Message)
    fun getRoomUsers(roomId: String): List<User>
    fun setRoomListener(listener: RoomListener)
}

interface RoomListener {
    fun onRoomStateChanged(roomId: String, state: RoomState)
    fun onUserJoined(roomId: String, user: User)
    fun onUserLeft(roomId: String, user: User)
    fun onMessageReceived(roomId: String, message: Message)
}

使用方式

// 获取房间服务
val roomService = RoomService.getInstance()

// 设置监听器
roomService.setRoomListener(object : RoomListener {
    override fun onUserJoined(roomId: String, user: User) {
        // 用户加入房间
        updateUserList()
    }
    
    override fun onMessageReceived(roomId: String, message: Message) {
        // 收到消息
        displayMessage(message)
    }
})

// 加入房间
val userInfo = UserInfo(userId = "user123", userName = "张三")
val success = roomService.joinRoom("room001", userInfo)

// 发送消息
val message = Message(type = MessageType.TEXT, content = "Hello World")
roomService.sendMessage("room001", message)

// 离开房间
roomService.leaveRoom("room001")

房间配置

data class RoomConfig(
    val maxUsers: Int = 50,           // 最大用户数
    val isPrivate: Boolean = false,   // 是否私密房间
    val allowGuest: Boolean = true,   // 是否允许游客
    val recordEnabled: Boolean = false // 是否开启录制
)

data class UserInfo(
    val userId: String,
    val userName: String,
    val avatar: String? = null,
    val role: UserRole = UserRole.MEMBER,
    val customAttributes: Map<String, Any> = emptyMap()
)

构建配置

implementation "com.wenext.android:frame-room:6.0.0"