多方通话房间回调接口 JRoomCallback

提供多方通话房间相关的回调方法,用于接收房间状态变化、加入/离开结果和查询结果等事件通知。 继承自 JCommonCallback,因此也包含了基础的登录状态、消息接收等通用回调方法。 应用需要实现此接口并通过 JRoomManager.addCallback 注册,才能接收到相关回调。

// 创建回调实现
const roomCallback: JRoomCallback = {
onJoin: (result, reason, roomId) => {
if (result) {
console.info(`成功加入房间: ${roomId}`);
} else {
console.error(`加入房间失败, 原因: ${reason}`);
}
},
onLeave: (reason, roomId) => {
console.info(`离开房间: ${roomId}, 原因: ${reason}`);
},
onRoomStateChanged: (state, oldState) => {
console.info(`房间状态从 ${oldState} 变为 ${state}`);
}
};

// 注册回调
JRoomManager.getInstance().addCallback(roomCallback);
  • JCommonCallback 基础回调接口
  • JRoomManager 房间管理器
interface JRoomCallback {
    onQuery?: (
        operationId: number,
        result: boolean,
        reason: JClientReason,
        queryInfo: undefined | JCCRoomQueryInfo,
    ) => void;
    onJoin?: (result: boolean, reason: JRoomReason, roomId: string) => void;
    onLeave?: (reason: JRoomReason, roomId: string) => void;
    onRoomStateChanged?: (state: JRoomState, oldState: JRoomState) => void;
}

Hierarchy

  • unknown
    • JRoomCallback

Properties

onQuery?: (
    operationId: number,
    result: boolean,
    reason: JClientReason,
    queryInfo: undefined | JCCRoomQueryInfo,
) => void

查询房间信息结果回调

Type declaration

    • (
          operationId: number,
          result: boolean,
          reason: JClientReason,
          queryInfo: undefined | JCCRoomQueryInfo,
      ): void
    • Parameters

      • operationId: number

        操作ID,与查询请求的返回值对应

      • result: boolean

        查询是否成功

      • reason: JClientReason

        查询失败原因

      • queryInfo: undefined | JCCRoomQueryInfo

        房间查询结果信息

      Returns void

调用 JRoomManager.query 接口后,会收到此回调通知查询结果。

  • 当result为true时,表示查询成功,queryInfo包含有效的房间信息
  • 当result为false时,表示查询失败,具体原因在reason参数中,此时queryInfo中仅roomId字段可用

operationId与query方法的返回值对应,可用于关联查询请求和结果,特别是在发起多个查询的情况下。

  • JClientReason 可能的失败原因枚举
  • JCCRoomQueryInfo 房间查询结果信息类
onJoin?: (result: boolean, reason: JRoomReason, roomId: string) => void

加入房间结果回调

Type declaration

    • (result: boolean, reason: JRoomReason, roomId: string): void
    • Parameters

      • result: boolean

        加入房间是否成功

      • reason: JRoomReason

        加入失败原因

      • roomId: string

        房间标识

      Returns void

调用 JRoomManager.join 接口后,会收到此回调通知加入结果。

  • 当result为true时,表示已成功加入房间,可以开始与房间内其他成员通话
  • 当result为false时,表示加入房间失败,具体原因在reason参数中

JRoomReason 可能的失败原因枚举

onLeave?: (reason: JRoomReason, roomId: string) => void

离开房间结果回调

Type declaration

    • (reason: JRoomReason, roomId: string): void
    • Parameters

      • reason: JRoomReason

        离开原因

      • roomId: string

        房间标识

      Returns void

调用 JRoomManager.leave 接口后,会收到此回调通知离开结果。 无论是主动离开还是被动离开(如被踢出、房间关闭等),都会触发此回调。

常见离开原因包括:

  • JRoomReason.QUIT: 用户主动离开
  • JRoomReason.KICKED: 被管理员踢出
  • JRoomReason.OVER: 房间结束
  • JRoomReason.NETWORK: 网络异常导致离开

JRoomReason 可能的离开原因枚举

onRoomStateChanged?: (state: JRoomState, oldState: JRoomState) => void

房间状态变化回调

Type declaration

    • (state: JRoomState, oldState: JRoomState): void
    • Parameters

      • state: JRoomState

        当前状态

      • oldState: JRoomState

        变化前状态

      Returns void

当自身在房间中的状态发生变化时会收到此回调。可能的状态变化场景包括:开始加入房间、成功加入房间、开始离开房间等。

可能的状态值:

  • JRoomState.IDLE: 空闲状态,未加入任何房间
  • JRoomState.JOINING: 正在加入房间过程中
  • JRoomState.JOINED: 已成功加入房间
  • JRoomState.LEAVING: 正在离开房间过程中

通常状态变化顺序:

  1. 加入房间:IDLE → JOINING → JOINED
  2. 离开房间:JOINED → LEAVING → IDLE

JRoomState 房间状态枚举