yirtc-sdk-web
Version:
基于WebRTC的实时音视频SDK
107 lines (106 loc) • 2.81 kB
TypeScript
/**
* 信令适配器接口定义
* 用于定义不同信令实现的统一接口
*/
/**
* 信令消息类型
*/
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;
}