uyem
Version:
WebRTC client-server SFU application
111 lines • 5.02 kB
TypeScript
/******************************************************************************************
* Repository: https://github.com/kolserdav/werift-sfu-react.git
* File name: rtc.ts
* Author: Sergey Kolmiller
* Email: <uyem.ru@gmail.com>
* License: MIT
* License text: See in LICENSE file
* Copyright: kolserdav, All rights reserved (c)
* Create Date: Wed Aug 24 2022 14:14:09 GMT+0700 (Krasnoyarsk Standard Time)
******************************************************************************************/
/// <reference types="node" />
import * as werift from 'werift';
import { RTCInterface, MessageType, SendMessageArgs, RoomUser, RoomList, Command } from '../types/interfaces';
import WS from './ws';
import DB from './db';
declare type OnChangeVideoTrack = (args: {
roomId: string | number;
command: Command;
target: string | number;
}) => void;
export declare type OnRoomConnect = (args: {
roomId: string | number;
userId: string | number;
roomUsers: RoomUser[];
}) => void;
export declare type OnRoomOpen = (args: {
roomId: string | number;
ownerId: string | number;
}) => void;
declare class RTC extends DB implements Omit<RTCInterface, 'peerConnections' | 'createRTC' | 'handleVideoAnswerMsg' | 'addTracks'> {
peerConnectionsServer: RTCInterface['peerConnectionsServer'];
readonly delimiter = "_";
rooms: Record<string | number, RoomUser[]>;
ssrcIntervals: Record<string, NodeJS.Timer>;
muteds: RoomList;
offVideo: RoomList;
askeds: RoomList;
adminMuteds: RoomList;
banneds: Record<string, RoomUser[]>;
muteForAll: Record<string, boolean>;
onRoomConnect: OnRoomConnect | undefined;
onRoomDisconnect: OnRoomConnect | undefined;
onChangeVideoTrack: OnChangeVideoTrack | undefined;
onChangeMute: OnChangeVideoTrack | undefined;
readonly icePortRange: [number, number] | undefined;
ws: WS;
streams: Record<string, Record<string, werift.MediaStreamTrack[]>>;
constructor({ ws, prisma }: {
ws: WS;
prisma: DB['prisma'];
});
getPeerId(userId: number | string, target: number | string, connId: string): string;
closePeerConnectionHandler({ id, data: { target, roomId }, connId, }: SendMessageArgs<MessageType.GET_CLOSE_PEER_CONNECTION>): void;
createRTCServer: RTCInterface['createRTCServer'];
getRevPeerId(peerId: string): {
peerId: string;
userId: string;
target: string;
connId: string;
};
handleIceCandidate: RTCInterface['handleIceCandidate'];
getVideoTrackHandler: ({ id, data: { command, target, userId }, }: SendMessageArgs<MessageType.GET_VIDEO_TRACK>) => void;
handleCandidateMessage: RTCInterface['handleCandidateMessage'];
handleOfferMessage: RTCInterface['handleOfferMessage'];
sendCloseMessages({ roomId, userId, }: {
roomId: string | number;
userId: string | number;
}): void;
private deleteRoomItem;
getToAdminHandler({ data: { target, userId, command }, id, connId, }: SendMessageArgs<MessageType.GET_TO_ADMIN>): Promise<void>;
private getStreamConnId;
private getPeerConnId;
getKeysStreams(roomId: string | number): string[];
addTracksServer: RTCInterface['addTracksServer'];
private cleanStream;
closeVideoCall: RTCInterface['closeVideoCall'];
addUserToRoom({ userId, roomId, onRoomOpen, isPublic, }: {
userId: number | string;
roomId: number | string;
onRoomOpen?: OnRoomOpen;
isPublic: boolean;
}): Promise<{
error: 1 | 0;
isOwner: boolean;
}>;
getRoomLenght(): number;
handleGetRoomMessage({ message, port, cors, onRoomConnect, onRoomOpen, }: {
message: SendMessageArgs<MessageType.GET_ROOM>;
port: number;
cors: string;
onRoomConnect?: OnRoomConnect;
onRoomOpen?: OnRoomOpen;
}): Promise<void>;
onClosedCall: RTCInterface['onClosedCall'];
getPeerConnectionKeys(roomId: string | number): string[];
cleanDuplicateConnections({ roomId, userId, target, }: {
roomId: string;
userId: string;
target: string;
}): void;
cleanConnections(roomId: string, userId: string): void;
getMuteHandler({ id, data: { muted, roomId } }: SendMessageArgs<MessageType.GET_MUTE>): void;
getMuteForAllHandler: ({ id, data: { value }, }: SendMessageArgs<MessageType.GET_MUTE_FOR_ALL>) => void;
setAskedFloorHandler: ({ id, data: { userId, command }, }: SendMessageArgs<MessageType.GET_ASK_FLOOR>) => void;
getToMuteHandler({ id: roomId, data: { target }, }: SendMessageArgs<MessageType.GET_TO_MUTE>): void;
handleGetToBan({ id: roomId, data: { target, userId }, }: SendMessageArgs<MessageType.GET_TO_BAN>): Promise<void>;
handleGetToUnMute({ id: roomId, data: { target }, }: SendMessageArgs<MessageType.GET_TO_UNMUTE>): void;
handleGetToUnBan({ id: roomId, data: { target, userId }, }: SendMessageArgs<MessageType.GET_TO_UNBAN>): void;
}
export default RTC;
//# sourceMappingURL=rtc.d.ts.map