@rongcloud/plugin-wechat-rtc
Version:
@rongcloud/plugin-wechat-rtc
289 lines • 9.44 kB
TypeScript
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