UNPKG

@rongcloud/plugin-wechat-rtc

Version:

@rongcloud/plugin-wechat-rtc

289 lines 9.44 kB
import { EventEmitter, ILogger, IReceivedMessage, IRuntime, RTCJoinType } from '@rongcloud/engine'; import { IRCRTCInitOptions } from '../RCRTCClient'; import { RCMediaType } from '../enums/RCMediaType'; import { RCRTCCode } from '../enums/RCRTCCode'; import { Invoker } from '../invoker'; import { IResourceNetStatus, IRoomEventListener, ISubParams } from '../interfaces'; import { RCRemoteStream } from '../RCRemoteStream'; import { CommandExecuteContext } from '../command/CommandExecuteContext'; import { RCAudioOutputDevice } from '../../components/enum'; import { RTCContext } from '../codec/RTCContext'; export declare const InnerRoomEvent: { LEAVE: string; DEL_RECV_NET_STAT: string; DEL_SEND_NET_STAT: string; ON_USER_JOIN: string; ON_USER_LEAVE: string; ON_STREAM_PUBLISH: string; ON_STREAM_UNPUBLISH: string; ON_AUDIO_MUTE_CHANGE: string; ON_VIDEO_MUTE_CHANGE: string; OPERATE_DEVICE_BY_MEDIA_TYPE: string; }; export default class RCRTCRoom extends EventEmitter { protected readonly _context: RTCContext; protected readonly _logger: ILogger; private readonly _runtime; protected readonly _initOptions: IRCRTCInitOptions; protected readonly _roomId: string; private _isOpenCamera; private _isOpenMic; private _mediaServer; private _resourceListener; private _store; protected readonly _invoker: Invoker; protected _commandCtx: CommandExecuteContext; /** * 房间保活 rtcPing */ private readonly _pinger; constructor(_context: RTCContext, _logger: ILogger, _runtime: IRuntime, _initOptions: IRCRTCInitOptions, _roomId: string); /** * 拉取房间数据 * @param roomId 房间 id */ private _startPullRTCRoomStatus; private _handlePingResult; /** * @private */ __innerInitialize(joinType?: RTCJoinType): Promise<RCRTCCode>; protected _callAppListener(eventType: keyof IRoomEventListener, ...attrs: any[]): void; private _bindRoomEvent; private _operateDeviceByMediaType; private _onStreamPublish; private _onStreamUnpublish; private _onAudioMuteChange; private _onVideoMuteChange; private _onUserJoin; private _onUserLeave; private _kickOff; /** * @private */ __parseInnerMessage(message: IReceivedMessage): void; /** * 注册房间事件 * @param listener 房间人员、资源变动监听 */ registerRoomEventListener(listener: IRoomEventListener | null): void; /** * 业务层注册的上下行数据上报事件 */ private _reportListener; /** * 注册小程序网络状态和资源数据事件 * @param listener 小程序网络状态和资源数据监听 */ registerReportListener(listenerEvent: ((data: IResourceNetStatus) => void) | null): void; /** * 上报给业务层的上下行数据 */ private _netStatusData; /** * 接收推流组件上报的网络数据 * @param data 推流组件的网络数据 */ private _pusherNetStatusListener; /** * 接收拉流组件上报的网络数据 * @param msid 拉流组件 id,即 stream 的 msid * @param data 拉流组件的网络数据 */ private _playerNetStatusListener; /** * 注册本端麦克风采集的音量通知 */ onLocalAudioLevelChange(listenerEvent: ((volume: number) => void) | null): void; /** * 注册远端订阅资源的音量通知 */ onRemoteAudioLevelChange(listenerEvent: ((msid: string, volume: number) => void) | null): void; /** * 开启视频预览 */ startPreview(): void; /** * 关闭视频预览 */ stopPreview(): void; /** * 开启摄像头 * 未发布视频时,该方法仅打开摄像头硬件设备 * 发布过视频时,打开摄像头硬件设备后,修改视频资源状态为可用,订阅端可以看到发布的视频 */ openCamera(): Promise<{ code: RCRTCCode; }>; /** * 关闭摄像头 * 未发布视频时,该方法仅关闭摄像头硬件设备 * 发布过视频时,关闭摄像头硬件设备后,修改视频资源状态为不可用,订阅端看到发布的视频为黑屏 */ closeCamera(): Promise<{ code: RCRTCCode; }>; /** * 切换前后置摄像头 */ switchCamera(): void; /** * 开启麦克风 * 未发布音频时,该方法仅打开麦克风硬件设备 * 发布过视频时,打开麦克风硬件设备后,修改音频资源状态为可用,订阅端可以听到发布的声音 */ openMicphone(): Promise<{ code: RCRTCCode; }>; /** * 关闭麦克风 * 未发布音频时,该方法仅关闭麦克风硬件设备 * 发布过视频时,关闭麦克风硬件设备后,修改音频资源状态为不可用,订阅端听不到发布的声音 */ closeMicphone(): Promise<{ code: RCRTCCode; }>; /** * 发布资源 * @param tag 资源标识,可不传,默认为 RongCloudRTC * @param mediaType 资源类型,代表发布音频、视频或音视频,可不传,默认为 RCMediaType.AUDIO_VIDEO * @returns 发布资源状态码 */ publishStream(tag?: string, mediaType?: RCMediaType): Promise<{ code: RCRTCCode; }>; /** * 取消发布 * @returns 取消发布的状态码 */ unpublishStream(): Promise<{ code: RCRTCCode; }>; /** * 订阅资源 * @param subParams 订阅参数列表 * * ISubParams.stream 从房间数据或房间发布资源事件监听中拿到的 RCRemoteStream 对象 * * ISubParams.subTiny 是否订阅小流,可不传,默认为小流,boolean 类型,true 代表订阅小流 * @returns 订阅的状态码 */ subscribe(subParams: ISubParams[] | RCRemoteStream[]): Promise<{ code: RCRTCCode; }>; /** * 取消订阅 * @param streams 一组远端 stream 对象 * @returns 取消订阅的状态码 */ unsubscribe(streams: RCRemoteStream[]): Promise<{ code: RCRTCCode; }>; /** * 取消订阅时,需更新下行网络数据 * @param streams 取消订阅的资源列表 */ private _deleteReceiverNetStatus; private _deleteSerderNetStatus; /** * @private * im 重新连接之后的处理 */ __onReconnected(): void; /** * 离开房间 * @private */ __leaveHandle(quitRoom: boolean): Promise<void>; /** * 摄像头是否开启 */ isCameraOpen(): boolean; /** * 麦克风是否开启 */ isMicphoneOpen(): boolean; /** * 房间是否被销毁 */ isDestroyed(): boolean; /** * 获取房间 Id * @returns 返回房间 Id */ getRoomId(): string; getSessionId(): string; /** * 获取当前用户 * @returns 返回当前用户 Id */ getCrtUserId(): string; /** * 获取房间内其他人员 */ getRemoteUserIds(): string[]; /** * 获取远端发布的所有资源列表 streams */ getRemoteStreams(): RCRemoteStream[]; /** * 根据 userId 获取此用户在房间内发布的资源列表 * @param userId 远端用户 Id */ getRemoteStreamsByUserId(userId: string): RCRemoteStream[]; /** * 向房间内发消息 * @param name 消息名称 * @param content 消息内容 */ sendMessage(name: string, content: any): Promise<{ code: RCRTCCode; }>; /** * 设置房间属性 * @param key 属性名 * @param value 属性值 * @param message 是否在设置属性的时候携带消息内容,传空则不往房间中发送消息 * @param isInner RTC 业务内部使用参数,用户忽略 */ setRoomAttribute(key: string, value: string, message?: { name: string; content: any; }, isInner?: boolean): Promise<{ code: RCRTCCode; }>; /** * 删除房间属性 * @param keys 待删除的属性名数组 * @param message 是否在删除属性的时候携带消息内容,传空则不往房间中发送消息 * @param isInner RTC 业务内部使用参数,用户忽略 */ deleteRoomAttributes(keys: string[], message: { name: string; content: any; }, isInner?: boolean): Promise<{ code: RCRTCCode; }>; /** * 获取房间属性 * @param keys 要查询的属性名数组,当数组长度为空时,取所有已设置的 kv 值 * @param isInner RTC 业务内部使用参数,用户忽略 */ getRoomAttributes(keys?: string[], isInner?: boolean): Promise<{ code: RCRTCCode; data?: undefined; } | { code: RCRTCCode; data: import("@rongcloud/engine").KVString | undefined; }>; /** * 切换声音输出设备,房间内所有远端流的音频输出设备将被切换 * @param mode * @deprecated 仅 iOS 设备下有效;部分 Android 设备因小程序底层 live-pusher 实现存在 Bug,调用无效。 */ setAudioOutputDevice(mode: RCAudioOutputDevice): void; /** * 获取当前的声音输出设备配置 * @returns */ getAudioOutputDevice(): RCAudioOutputDevice; } //# sourceMappingURL=RCRTCRoom.d.ts.map