import { Participant } from "../models/Participant"; import { BaseSFUWebsocket } from "../base/BaseSFUWebsocket"; import WebSocket from "ws"; export declare enum WebSocketBasicEvents { Config = "config", JoinRoom = "joinRoom", CloseRoomForceFully = "CloseRoomForceFully", IsSetupDone = "setupDone", Ping = "ping", Pong = "pong", AudioVideoPauseResume = "audioVideoPauseResume", OnStartMeetingCalled = "startMeetingCalled", OnStartParticipantMeetingCalled = "OnStartParticipantMeetingCalled", OnAudioVideoPauseResume = "audioVideoPauseResume", OnAudioVideoStatusUpdated = "audioVideoStatusUpdated", OnAudioUnblockRequest = "audioUnblock", OnVideoUnblockRequest = "videoUnblock", OnAudioBlockRequest = "audioBlock", OnVideoBlockRequest = "videoBlock", UpdateParticipant = "updateParticipant", UpdateParticipantData = "UpdateParticipantData", OnParticipantUpdated = "participantUpdated", OnNewJoinee = "newJoinee", OnRejoined = "rejoined", OnUserOnFoundWhileReconnect = "onUserOnFoundWhileReconnect", OnUserLeft = "userLeft", GetAllParticipant = "getParticipant", OnServerParticipants = "participants", GetMeetingStartTime = "getMeetingStartTime", OnMeetingStartTime = "meetingStartTime", GetOldMessages = "getOldMessages", OnOldMessages = "oldMessages", Message = "message", OnChat = "chat", SelfLeft = "selfLeft" } export declare enum SFUMessageType { SFUMessage = "sfuMessage", GetRouterRtpCapabilities = "routerRtpCapabilities", ReloadSFU = "reloadSFU", ReloadSFUCleanUpDone = "ReloadSFUCleanUpDone", OnRouterRtpCapabilities = "onRouterRtpCapabilities", OnTransportConnect = "transportConnect", OnCreateTransports = "createTransports", OnCreateTransportsForcefully = "OnCreateTransportsForcefully", OnTransportConnectDone = "transportConnectDone", OnSendTransport = "onSendTransport", OnConsumeTransport = "onConsumeTransport", OnTransportProduceSyncRequest = "transportProduceSync", OnTransportDataProduceSyncRequest = "dataTransportProduceSync", OnReadyToConsume = "readyToConsume", OnStartRTMP = "startRtmp", OnProducerClosed = "producerClosed", OnPauseProducer = "pauseProducer", OnResumeProducer = "resumeProducer", OnNewProducer = "onNewProducer", ConsumeProductId = "consumeProductId", OnServerConsumer = "onServerConsumer", ResumeConsumer = "resumeConsumer", PauseConsumer = "pauseConsumer", OnProduceSyncDone = "produceSyncDone", OnSpeakerChanged = "onSpeakerChanged", OnAudioVolumeChanged = "OnAudioVolumeChanged", OnRestartIceCandidate = "restartIceCandidate", OnRestartIceCandidateResponse = "onRestartIceCandidate", OnTrackEnded = "onTrackEnded", UpdateSpatialConsumer = "updateSpatialConsumer", OnTransportNotFound = "onTransportNotFound", GetAllProducers = "getAllProducers", OnAllProducers = "onAllProducers", OnStopProducer = "stopProducer", OnConsumerScoreChange = "OnConsumerScoreChange", OnProducerScoreChange = "OnProducerScoreChange", OnConsumerLayerChange = "OnConsumerLayerChange", OnProducerNotFound = "OnProducerNotFound" } export declare enum WebrtcMessageType { WebrtcMessage = "WebrtcMessage", SendOffer = "SendOffer", IceCandidate = "IceCandidate", SendAnswer = "SendAnswer", NegotiationNeeded = "NegotiationNeeded" } export declare enum MultiSystemEvents { OnNewServerJoinedForRoom = "OnNewServerJoinedForRoom", OnConsumerData = "OnConsumerData", OnRemoteConsumerClosed = "OnRemoteConsumerClosed", OnConnectPipe = "OnConnectPipe", OnPipeConnected = "OnPipeConnected", OnPipeClosed = "OnPipeClosed", SyncLocalEvent = "SyncLocalEvent" } export declare enum LocalMessageType { OnNewUserJoinedRoom = "onNewUserJoinedRoom", OnUserLeft = "OnUserLeft", SocketMessage = "socketMessage", SelfLeftForceFully = "SelfLeftForceFully" } export type WebSocketEvents = SFUMessageType | WebSocketBasicEvents | LocalMessageType | MultiSystemEvents | SyncLocalEvent | WebrtcMessageType; export interface SyncLocalEvent { interfaceName: 'SyncLocalEvent'; type: MultiSystemEvents; data?: { key: string; fieldOne: any; fieldTwo: any; }; senderIp?: string; } export interface WebSocketMessageBody { interfaceName: 'WebSocketMessageBody'; type: WebSocketEvents; data?: any; senderUUID?: any; } export interface MultiSystemEventsBody { interfaceName: 'MultiSystemEventsBody'; type: MultiSystemEvents; data?: any; roomId: string; senderUUID?: any; } export interface ClientMessageBody { interfaceName: 'ClientMessageBody'; shouldSendToSelf: boolean; senderParticipant: Participant; broadcastMessage: WebSocketMessageBody; senderUUID?: any; } export interface RediSubsciptionDetail { topic: string; listener: (data: string) => void; } export declare class EachSocketConnectionHandler extends BaseSFUWebsocket { private uuid; private socket; selfParticipant?: Participant; private appId; private isActive; private isUserJoinedFromAnotherSocket; private roomIds; private redisSubscribtionDetails; private isReconnectionFromUrl; private numberOfPongWaiting; private lastPingTime; private pingPongTimeout; private destoryCallback?; private connectionProtocol; private webrtchHandler; constructor(socket: WebSocket.WebSocket, isReconnectionFromUrl: boolean); onDestoryCallback(callBack: (socketHandler: EachSocketConnectionHandler) => void): void; init(): Promise; private onSocketClosed; private onUserLeft; private onNewMessage; closeRoomForcefully: () => Promise; private onAudioVideoPauseResume; private onStartMeetingCalled; private onConfig; private joinRoom; private onSetupDone; private getMeetingStartTimeAndInfromIfNotExist; private getAllParticipants; private startPingPong; private cleanUp; private sendVaniEvent; private onNewUserJoinedRoomWithSameUserId; private sendMessageToClient; private onRedisMessage; private subscribeToRedisMessages; private redisSubscribeToTopic; private onLocalRedisMessage; }