fleeta-api-lib
Version:
A comprehensive library for fleet management applications - API, Auth, Device management
192 lines • 5.02 kB
TypeScript
/**
* Enhanced WebRTC Connection for Multi-Device Provider
* Extends the existing WebRTC connection with multi-device specific features
*/
import type { ConnectionState, StreamQuality, CameraChannel, VoiceCommState, TwoWayAudioStatus } from './types';
/**
* Connection configuration for multi-device WebRTC
*/
export interface MultiDeviceConnectionConfig {
deviceId: string;
channel: CameraChannel;
quality: StreamQuality;
clientId: string;
role: 'VIEWER' | 'MASTER';
enableStats: boolean;
statsInterval: number;
enableVoiceComm: boolean;
onStateChange?: (state: ConnectionState) => void;
onError?: (error: Error) => void;
onStreamReceived?: (stream: MediaStream) => void;
onStatsUpdate?: (stats: ConnectionStats) => void;
onVoiceCommStateChange?: (state: VoiceCommState) => void;
}
/**
* Connection statistics for multi-device monitoring
*/
export interface ConnectionStats {
bytesReceived: number;
packetsReceived: number;
packetsLost: number;
jitter: number;
roundTripTime: number;
connectionId: string;
deviceId: string;
channel: CameraChannel;
quality: StreamQuality;
timestamp: number;
}
/**
* Enhanced WebRTC Connection for Multi-Device scenarios
* 기존 WebRTCConnection을 확장하여 다중 디바이스 지원
*/
export declare class MultiDeviceWebRTCConnection {
private config;
private webrtcConfig;
private state;
private error;
private connectionId;
private peerConnection;
private signalingClient;
private stream;
private stats;
private statsInterval;
private currentQuality;
private qualityConstraints;
private voiceCommState;
private localAudioStream;
private remoteAudioStream;
private remoteAudioElement;
/**
* Create enhanced WebRTC connection for multi-device streaming
*/
constructor(config: MultiDeviceConnectionConfig);
/**
* Start WebRTC connection with multi-device support
*/
connect(): Promise<void>;
/**
* Disconnect WebRTC connection
*/
disconnect(): Promise<void>;
/**
* Change channel while maintaining connection
*/
changeChannel(newChannel: CameraChannel): Promise<void>;
/**
* Change stream quality
*/
changeQuality(newQuality: StreamQuality): Promise<void>;
/**
* Start voice communication
* 양방향 음성 통신 시작
*/
startVoiceComm(): Promise<TwoWayAudioStatus>;
/**
* Stop voice communication
* 양방향 음성 통신 중지
*/
stopVoiceComm(): Promise<TwoWayAudioStatus>;
/**
* Toggle local audio (microphone mute/unmute)
*/
setLocalAudioEnabled(enabled: boolean): void;
/**
* Set remote audio volume
*/
setRemoteAudioVolume(volume: number): void;
/**
* Get voice communication state
*/
getVoiceCommState(): VoiceCommState;
/**
* Get current MediaStream
*/
getStream(): MediaStream | null;
/**
* Get current connection state
*/
getState(): ConnectionState;
/**
* Get current connection statistics
*/
getStats(): ConnectionStats | null;
/**
* Get connection information
*/
getConnectionInfo(): {
id: string;
deviceId: string;
channel: CameraChannel;
quality: StreamQuality;
state: ConnectionState;
};
/**
* Clean up all resources
*/
destroy(): void;
/**
* Initialize WebRTC connection with KVS WebRTC SDK
*/
private initializeWebRTCConnection;
/**
* Setup signaling client event handlers
*/
private setupSignalingHandlers;
/**
* Generate quality constraints based on quality level
*/
private generateQualityConstraints;
/**
* Renegotiate connection with new quality settings
*/
private renegotiateWithNewQuality;
/**
* Start WebRTC audio streams for voice communication
*/
private startWebRTCAudio;
/**
* Stop WebRTC audio streams
*/
private stopWebRTCAudio;
/**
* Handle remote audio stream received
*/
private handleRemoteAudioStream;
/**
* Renegotiate peer connection for audio
*/
private renegotiateForAudio;
/**
* Update voice communication state and notify callbacks
*/
private updateVoiceCommState;
/**
* Start connection statistics monitoring
*/
private startStatsMonitoring;
/**
* Stop connection statistics monitoring
*/
private stopStatsMonitoring;
/**
* Set connection state and notify callbacks
*/
private setState;
/**
* Set error and notify callbacks
*/
private setError;
}
declare global {
interface Window {
KVSWebRTC: {
SignalingClient: any;
Role: {
VIEWER: string;
MASTER: string;
};
};
}
}
//# sourceMappingURL=WebRTCConnection.d.ts.map