yirtc-sdk-web
Version:
基于WebRTC的实时音视频SDK
103 lines (102 loc) • 2.8 kB
TypeScript
/**
* 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;
}