UNPKG

yirtc-sdk-web

Version:

基于WebRTC的实时音视频SDK

107 lines (106 loc) 2.81 kB
/** * 信令适配器接口定义 * 用于定义不同信令实现的统一接口 */ /** * 信令消息类型 */ export declare enum SignalingMessageType { JOIN = "join", LEAVE = "leave", OFFER = "offer", ANSWER = "answer", CANDIDATE = "candidate", KEEPALIVE = "keepalive", ERROR = "error" } /** * 信令消息接口 */ export interface SignalingMessage { type: SignalingMessageType; payload: any; from?: string | number; to?: string | number | 'all'; roomId?: string; timestamp?: number; } /** * 信令配置接口 */ export interface SignalingConfig { url: string; autoReconnect?: boolean; reconnectInterval?: number; reconnectAttempts?: number; } /** * 信令适配器接口 */ export interface SignalingInterface { /** * 连接到信令服务器 * @returns Promise<void> */ connect(): Promise<void>; /** * 断开与信令服务器的连接 */ disconnect(): void; /** * 发送消息到信令服务器 * @param type 消息类型 * @param payload 消息内容 * @param to 接收者ID * @returns boolean 是否发送成功 */ sendMessage(type: SignalingMessageType, payload: any, to?: string | number | 'all'): boolean; /** * 加入房间 * @param roomId 房间ID * @param userId 用户ID * @param userData 用户数据 * @returns Promise<void> */ joinRoom(roomId: string, userId: string | number, userData?: any): Promise<void>; /** * 离开房间 */ leaveRoom(): void; /** * 发送SDP offer * @param offer SDP offer * @param targetUserId 目标用户ID */ sendOffer(offer: RTCSessionDescriptionInit, targetUserId: string | number): boolean; /** * 发送SDP answer * @param answer SDP answer * @param targetUserId 目标用户ID */ sendAnswer(answer: RTCSessionDescriptionInit, targetUserId: string | number): boolean; /** * 发送ICE candidate * @param candidate ICE candidate * @param targetUserId 目标用户ID */ sendCandidate(candidate: RTCIceCandidateInit, targetUserId: string | number): boolean; /** * 添加消息监听器 * @param event 事件名称 * @param callback 回调函数 */ on(event: string, callback: Function): void; /** * 移除消息监听器 * @param event 事件名称 * @param callback 回调函数 */ off(event: string, callback: Function): void; /** * 添加一次性消息监听器 * @param event 事件名称 * @param callback 回调函数 */ once(event: string, callback: Function): void; }