UNPKG

detritus-client-socket

Version:

A TypeScript NodeJS library to interact with Discord's Gateway

99 lines (98 loc) 3.15 kB
/// <reference types="node" /> import * as dgram from 'dgram'; import { EventSpewer } from 'detritus-utils'; import { MediaCodecs, MediaCodecTypes } from './constants'; import { Socket as MediaSocket } from './media'; import { RTPHeader, RTPNonce } from './mediapackets/rtp'; export interface FrameOptions { incrementNonce?: boolean; incrementSequence?: boolean; incrementTimestamp?: boolean; nonce?: number; sequence?: number; timestamp?: number; type?: string; useCache?: boolean; } export interface IpInformation { ip: null | string; port: null | number; } export interface RTPPayload { header: RTPHeader; nonce?: Buffer; payload?: Buffer; } export interface TransportPacket { codec: MediaCodecs | null; data: Buffer; format: MediaCodecTypes | null; from: UDPFrom; rtp?: RTPPayload; userId: null | string; } export interface UDPFrom { address: string; family: string; port: number; size: number; } export declare class Socket extends EventSpewer { caches: { audio: Buffer; video?: Buffer; }; codecs: { audio: null | string; video: null | string; }; connected: boolean; headers: { audio: RTPHeader; video?: RTPHeader; }; key: null | Uint8Array; local: IpInformation; mediaGateway: MediaSocket; mode: null | string; nonces: { audio: RTPNonce; video?: RTPNonce; }; remote: IpInformation; socket: dgram.Socket | null; ssrc: number; transportId: null | string; constructor(mediaGateway: MediaSocket); get audioSSRC(): number; get videoSSRC(): number; get rtxSSRC(): number; get rtpAudioPayloadType(): null | number; get rtpVideoPayloadType(): null | number; get rtpRTXPayloadType(): null | number; get receiveEnabled(): boolean; get videoEnabled(): boolean; setAudioCodec(codec?: MediaCodecs | null | string): Socket; setVideoCodec(codec?: MediaCodecs | null | string): Socket; setKey(value: Array<number>): Socket; setMode(value: string): Socket; setSSRC(value: number): Socket; setTransportId(value: string): Socket; connect(ip?: null | string, port?: null | number): Socket; disconnect(): void; onPacket(packet: Buffer, from: UDPFrom): void; send(packet: Buffer): void; sendAudioFrame(packet: Buffer, options?: FrameOptions): void; sendVideoFrame(packet: Buffer, options?: FrameOptions): void; sendFrame(packet: Buffer, options?: FrameOptions): void; sendAudioSilenceFrame(): void; on(event: string | symbol, listener: (...args: any[]) => void): this; on(event: 'close', listener: () => any): this; on(event: 'killed', listener: () => any): this; on(event: 'log', listener: (error: Error) => any): this; on(event: 'open', listener: () => any): this; on(event: 'packet', listener: (packet: TransportPacket) => any): this; on(event: 'ready', listener: () => any): this; on(event: 'socket', listener: (socket: dgram.Socket) => any): this; on(event: 'warn', listener: (error: Error) => any): this; }