UNPKG

yirtc-sdk-web

Version:

基于WebRTC的实时音视频SDK

81 lines (80 loc) 2.32 kB
/** * WebSocket 信令适配器实现 */ import { EventEmitter } from '../../utils/eventEmitter'; import { SignalingInterface, SignalingConfig, SignalingMessageType } from './interface'; /** * WebSocket 信令适配器 * 实现基于 WebSocket 的信令通信 */ export declare class WebSocketSignaling extends EventEmitter implements SignalingInterface { 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; /** * 处理收到的消息 * @param message 收到的消息 */ private handleMessage; /** * 尝试重新连接 */ private attemptReconnect; }