UNPKG

yirtc-sdk-web

Version:

基于WebRTC的实时音视频SDK

115 lines (114 loc) 2.94 kB
/** * 信令模块 - 负责处理WebSocket连接和信令交换 */ import { EventEmitter } from './utils/eventEmitter'; /** * 信令配置接口 */ export interface SignalingConfig { url: string; autoReconnect?: boolean; reconnectInterval?: number; reconnectAttempts?: number; } /** * 信令消息类型 */ 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 declare class Signaling extends EventEmitter { private config; private ws; private logger; private reconnectTimer; private reconnectAttempts; private connected; private roomId; private userId; /** * 构造函数 * @param config 信令配置 */ constructor(config: SignalingConfig); /** * 连接到信令服务器 * @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; /** * 发送心跳包 */ sendKeepAlive(): boolean; /** * 处理收到的消息 * @param message 收到的消息 */ private handleMessage; /** * 尝试重新连接 */ private attemptReconnect; }