UNPKG

@klever-one/web-sdk

Version:

Web SDK for integrating real-time room management and streaming functionality into web applications

98 lines (97 loc) 3.59 kB
import { ConnectionStatus, RoomInfo } from '../types'; export declare class RoomManager { #private; private static instance; private apiKey; private templatePersonaId?; private personaId?; private userId?; private onMessageReceived?; private roomId; private token; private checkRoom; private webSocket; private reconnectAttempts; private maxReconnectAttempts; private reconnectTimeout; private readonly STUDIO_API_PREFIX; private readonly STUDIO_ROOM_PREFIX; private readonly API_KEY_HEADER; private readonly BASE_URL; private heartbeatInterval; private readonly HEARTBEAT_INTERVAL; private readonly HEARTBEAT_MESSAGE; private connectionManager; private eventBus; private statusListeners; private roomInfoListeners; private disconnectListeners; private errorHandlers; private idleTimeoutHandler; private pageUnloadHandler; private unsubscribeIdleTimeout; private unsubscribePageUnload; private constructor(); static hasInstance(): boolean; static getInstance(apiKey?: string, templatePersonaId?: string | null, personaId?: string | null, userId?: string | null, onMessageReceived?: (event: MessageEvent) => void): RoomManager; get connectionStatus(): ConnectionStatus; get roomInfo(): RoomInfo | null; addStatusListener(listener: (status: ConnectionStatus) => void): void; removeStatusListener(listener: (status: ConnectionStatus) => void): void; addRoomInfoListener(listener: (roomInfo: RoomInfo | null) => void): void; removeRoomInfoListener(listener: (roomInfo: RoomInfo | null) => void): void; addDisconnectListener(listener: () => void): void; removeDisconnectListener(listener: () => void): void; addErrorHandler(handler: (error: Error) => void): () => void; private setConnectionStatus; private setRoomInfo; private notifyStreamingManagerDisconnect; handleStreamingDisconnect(): void; private createRoom; private checkRoomStatus; private connectRoom; requestInitialData(): void; private handleWebSocketOpen; private handleWebSocketMessage; private handleInitialDataMessage; private handleError; private handleWebSocketError; private handleWebSocketClose; private attemptReconnect; private initiateWebSocketConnection; private waitForWebSocketConnection; reconnect(): Promise<void>; private static throttledInitializeRoom; _initializeRoom({ isReconnect, }: { isReconnect?: boolean | null; }): Promise<void>; initializeRoom({ isReconnect, }: { isReconnect?: boolean | null; }): Promise<void>; sendMessage(message: string | object | ArrayBuffer | Blob): Promise<void>; private sendMessageInternal; createMessageBuffer({ action, payload, header, }: { action: string; payload: Uint8Array; header: Uint8Array; }): Uint8Array; /** * WebSocket 전송 전 연결 상태를 확인하는 동기화 함수 */ private synchronizedSendMessage; /** * JSON 데이터를 청크 단위로 전송하는 함수 * - payload: 전송할 Uint8Array 데이터 * - actionName: 첫 청크에 포함할 액션 * - chunkSize: 각 청크의 크기 (기본값: 16000) */ sendDataInChunks({ payload, actionName, chunkSize, }: { payload: Uint8Array; actionName: string; chunkSize?: number; }): Promise<void>; disconnect(): void; private startHeartbeat; private stopHeartbeat; private generateEventId; }