yirtc-sdk-web
Version:
基于WebRTC的实时音视频SDK
115 lines (114 loc) • 2.94 kB
TypeScript
/**
* 信令模块 - 负责处理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;
}