UNPKG

yirtc-sdk-web

Version:

基于WebRTC的实时音视频SDK

103 lines (102 loc) 2.8 kB
/** * Socket.IO 信令适配器实现 */ import { EventEmitter } from '../../utils/eventEmitter'; import { SignalingInterface, SignalingConfig, SignalingMessageType } from './interface'; /** * Socket.IO 信令适配器 * 实现基于 Socket.IO 的信令通信 */ export declare class SocketIOSignaling extends EventEmitter implements SignalingInterface { private socket; private reconnectTimer; private reconnectAttempts; private connected; private roomId; private userId; private config; private logger; private socketOptions; private heartbeatTimer; private heartbeatInterval; private heartbeatTimeout; private missedHeartbeats; private maxMissedHeartbeats; /** * 构造函数 * @param config 信令配置 */ constructor(config: SignalingConfig); /** * 连接到信令服务器 * @returns Promise<void> */ connect(): Promise<void>; /** * 断开与信令服务器的连接 */ disconnect(): void; /** * 停止心跳检测 */ private stopHeartbeat; /** * 启动心跳检测 */ private startHeartbeat; /** * 发送心跳包 */ private sendHeartbeat; /** * 处理心跳响应 */ private handleHeartbeatResponse; /** * 处理连接丢失 */ private handleConnectionLost; /** * 发送消息到信令服务器 * @param type 消息类型 * @param payload 消息内容 * @param to 接收者ID * @returns boolean 是否发送成功 */ sendMessage(type: SignalingMessageType, payload: any, to?: string): boolean; /** * 处理接收到的消息 * @param message 消息对象 */ private handleMessage; /** * 加入房间 * @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; }