vban
Version:
Node VBAN implementation
37 lines (36 loc) • 1.47 kB
TypeScript
import { BindOptions, RemoteInfo, Socket } from 'node:dgram';
import type { AddressInfo } from 'node:net';
import type { Buffer } from 'node:buffer';
import { EventEmitter } from 'node:events';
import { VBANPacket, VBANPacketTypes } from './packets/index.js';
import { IVBANServerOptions } from './IVBANServerOptions.js';
export interface VBANServerEvents {
listening: () => void;
error: (err: Error) => void;
close: () => void;
message: (packet: VBANPacketTypes, sender: RemoteInfo, message: Buffer) => void;
}
export declare interface VBANServer {
on<U extends keyof VBANServerEvents>(event: U, listener: VBANServerEvents[U]): this;
emit<U extends keyof VBANServerEvents>(event: U, ...args: Parameters<VBANServerEvents[U]>): boolean;
}
export declare class VBANServer extends EventEmitter {
readonly UDPServer: Socket;
private readonly options;
private readonly frameCounter;
isListening: boolean;
constructor(options?: IVBANServerOptions);
address(): AddressInfo;
bind(port?: number, address?: string): Promise<void>;
bind(port?: number): Promise<void>;
bind(): Promise<void>;
bind(options: BindOptions): Promise<void>;
private getFrameCounter;
send(packet: VBANPacket, port: number, address: string): Promise<void>;
sendPing(receiver: {
address: string;
port: number;
}, isReply?: boolean): Promise<void>;
private readonly messageHandler;
close(): Promise<void>;
}