@sawport/peers-caller
Version:
WebRTC multi-peer video call library with mesh architecture supporting up to 4 participants
131 lines • 4.02 kB
TypeScript
/**
* CallSocket - WebSocket signaling management for PeersCaller
* Handles all WebSocket communication for call signaling
*/
import type { SignalingEvents, SignalingIncomingEvents } from "../types";
export declare class CallSocket {
private socket;
private serverUrl;
private socketPath;
private token;
private connected;
private reconnectAttempts;
private maxReconnectAttempts;
constructor(serverUrl: string, token: string, socketPath?: string);
/**
* Connect to the WebSocket server
*/
connect(): Promise<void>;
/**
* Disconnect from the WebSocket server
*/
disconnect(): void;
/**
* Check if socket is connected
*/
isConnected(): boolean;
/**
* Emit a signaling event - fire and forget (no response expected)
*/
emit<K extends keyof SignalingEvents>(event: K, data: Parameters<SignalingEvents[K]>[0]): void;
/**
* Emit a signaling event and wait for response
*/
emitWithResponse<K extends keyof SignalingEvents>(event: K, data: Parameters<SignalingEvents[K]>[0], timeoutMs?: number): Promise<any>;
/**
* Listen for an incoming signaling event (from server)
*/
on<K extends keyof SignalingIncomingEvents>(event: K, listener: SignalingIncomingEvents[K]): void;
/**
* Remove an incoming signaling event listener
*/
off<K extends keyof SignalingIncomingEvents>(event: K, listener?: SignalingIncomingEvents[K]): void;
/**
* Start a new call
*/
startCall(conversationId: string, userId: string): Promise<{
success: boolean;
participants: string[];
conversationId: string;
userId: string;
}>;
/**
* Join a call room for signaling
*/
joinRoom(conversationId: string, userId: string): Promise<{
participants: string[];
conversationId: string;
}>;
/**
* Leave a call
*/
leaveCall(conversationId: string, userId: string): Promise<{
conversationId: string;
success: boolean;
}>;
/**
* Send WebRTC offer
*/
sendOffer(to: string, from: string, offer: RTCSessionDescriptionInit, conversationId: string): void;
/**
* Send WebRTC answer
*/
sendAnswer(to: string, from: string, answer: RTCSessionDescriptionInit, conversationId: string): void;
/**
* Send ICE candidate
*/
sendCandidate(to: string, from: string, candidate: RTCIceCandidateInit, conversationId: string): void;
/**
* Send participant state update
*/
sendStateUpdate(to: string, from: string, state: any, conversationId: string): void;
/**
* End call for specific participant (legacy method)
*/
endCall(to: string, _from: string, conversationId: string): void;
/**
* End call for all participants
*/
endCallForAll(conversationId: string): Promise<void>;
/**
* Start recording
*/
startRecording(conversationId: string, recordingId: string): Promise<{
recordingId: string;
conversationId: string;
}>;
/**
* Send recording chunk
*/
sendRecordingChunk(conversationId: string, recordingId: string, chunk: Blob): void;
/**
* End recording
*/
endRecording(conversationId: string, recordingId: string): Promise<{
recordingId: string;
conversationId: string;
success: boolean;
}>;
/**
* Send transcript
*/
sendTranscript(conversationId: string, userId: string, transcript: string): void;
/**
* Check call status
*/
checkCallStatus(conversationId: string, userId: string): Promise<any>;
/**
* Handle disconnection scenarios
*/
private handleDisconnection;
/**
* Get connection health info
*/
getConnectionInfo(): {
connected: boolean;
socketId: string | undefined;
transport: string | undefined;
reconnectAttempts: number;
};
}
//# sourceMappingURL=CallSocket.d.ts.map