Spaces:
Sleeping
Sleeping
/** | |
* Core video client for RobotHub TransportServer | |
* Base class providing REST API, WebSocket, and WebRTC functionality | |
*/ | |
import { EventEmitter } from 'eventemitter3'; | |
import type { ParticipantRole, RoomInfo, RoomState, ConnectionInfo, WebSocketMessage, WebRTCSignalResponse, ClientOptions, WebRTCConfig, WebRTCStats, VideoConfig, RecoveryConfig, ErrorCallback, ConnectedCallback, DisconnectedCallback } from './types.js'; | |
export declare class VideoClientCore extends EventEmitter { | |
protected baseUrl: string; | |
protected apiBase: string; | |
protected websocket: WebSocket | null; | |
protected peerConnection: RTCPeerConnection | null; | |
protected localStream: MediaStream | null; | |
protected remoteStream: MediaStream | null; | |
protected workspaceId: string | null; | |
protected roomId: string | null; | |
protected role: ParticipantRole | null; | |
protected participantId: string | null; | |
protected connected: boolean; | |
protected options: ClientOptions; | |
protected webrtcConfig: WebRTCConfig; | |
protected onErrorCallback: ErrorCallback | null; | |
protected onConnectedCallback: ConnectedCallback | null; | |
protected onDisconnectedCallback: DisconnectedCallback | null; | |
constructor(baseUrl: string, options?: ClientOptions); | |
listRooms(workspaceId: string): Promise<RoomInfo[]>; | |
createRoom(workspaceId?: string, roomId?: string, config?: VideoConfig, recoveryConfig?: RecoveryConfig): Promise<{ | |
workspaceId: string; | |
roomId: string; | |
}>; | |
deleteRoom(workspaceId: string, roomId: string): Promise<boolean>; | |
getRoomState(workspaceId: string, roomId: string): Promise<RoomState>; | |
getRoomInfo(workspaceId: string, roomId: string): Promise<RoomInfo>; | |
sendWebRTCSignal(workspaceId: string, roomId: string, clientId: string, message: RTCSessionDescriptionInit | RTCIceCandidateInit | Record<string, unknown>): Promise<WebRTCSignalResponse>; | |
connectToRoom(workspaceId: string, roomId: string, role: ParticipantRole, participantId?: string): Promise<boolean>; | |
disconnect(): Promise<void>; | |
createPeerConnection(): RTCPeerConnection; | |
createOffer(): Promise<RTCSessionDescriptionInit>; | |
createAnswer(offer: RTCSessionDescriptionInit): Promise<RTCSessionDescriptionInit>; | |
setRemoteDescription(description: RTCSessionDescriptionInit): Promise<void>; | |
addIceCandidate(candidate: RTCIceCandidateInit): Promise<void>; | |
startProducing(constraints?: MediaStreamConstraints): Promise<MediaStream>; | |
startScreenShare(): Promise<MediaStream>; | |
stopProducing(): void; | |
getLocalStream(): MediaStream | null; | |
getRemoteStream(): MediaStream | null; | |
getPeerConnection(): RTCPeerConnection | null; | |
getStats(): Promise<WebRTCStats | null>; | |
protected sendJoinMessage(): void; | |
protected handleMessage(message: WebSocketMessage): void; | |
protected handleRoleSpecificMessage(message: WebSocketMessage): void; | |
protected handleError(errorMessage: string): void; | |
sendHeartbeat(): Promise<void>; | |
isConnected(): boolean; | |
getConnectionInfo(): ConnectionInfo; | |
onError(callback: ErrorCallback): void; | |
onConnected(callback: ConnectedCallback): void; | |
onDisconnected(callback: DisconnectedCallback): void; | |
private fetchApi; | |
private extractVideoStats; | |
protected generateWorkspaceId(): string; | |
} | |