UNPKG

@nestjs/microservices

Version:

Nest - modern, fast, powerful node.js web framework (@microservices)

62 lines (61 loc) • 2.89 kB
import type { Type } from '@nestjs/common'; import * as net from 'net'; import { Server as NetSocket, Socket } from 'net'; import { TlsOptions } from 'tls'; import { TcpEvents, TcpStatus } from '../events/tcp.events.js'; import { TcpSocket } from '../helpers/index.js'; import { TcpOptions, TransportId } from '../interfaces/microservice-configuration.interface.js'; import { Server } from './server.js'; /** * @publicApi */ export declare class ServerTCP extends Server<TcpEvents, TcpStatus> { private readonly options; transportId: TransportId; protected server: NetSocket; protected readonly port: number; protected readonly host: string; protected readonly socketClass: Type<TcpSocket>; protected readonly maxBufferSize?: number; protected readonly incompleteMessageTimeout?: number; protected readonly maxSendBufferSize?: number; protected isManuallyTerminated: boolean; protected retryAttemptsCount: number; protected retryTimer?: ReturnType<typeof setTimeout>; protected tlsOptions?: TlsOptions; protected pendingEventListeners: Array<{ event: keyof TcpEvents; callback: TcpEvents[keyof TcpEvents]; }>; /** * Sockets accepted by this server that are still open. "net.Server#close" * only stops the server from accepting new connections, so these are tracked * separately and torn down on "close" - otherwise the process outlives the * shutdown and handlers keep running on already established connections. */ protected readonly openSockets: Set<net.Socket>; constructor(options: Required<TcpOptions>['options']); listen(callback: (err?: unknown, ...optionalParams: unknown[]) => void): void; close(): void; bindHandler(socket: Socket): void; handleMessage(socket: TcpSocket, rawMessage: unknown): Promise<any>; handleClose(): undefined | number | NodeJS.Timer; unwrap<T>(): T; on<EventKey extends keyof TcpEvents = keyof TcpEvents, EventCallback extends TcpEvents[EventKey] = TcpEvents[EventKey]>(event: EventKey, callback: EventCallback): void; protected init(): void; protected registerListeningListener(socket: net.Server): void; protected registerErrorListener(socket: net.Server): void; protected registerCloseListener(socket: net.Server): void; /** * Keeps a reference to an accepted socket so that it can be destroyed when * the server is closed, and drops it again once it closes on its own. */ protected trackOpenSocket(socket: Socket): void; /** * Destroys every socket still open. Called on shutdown so that "close" does * not leave the process alive, and so that no further messages are dispatched * to handlers over connections established before the shutdown. */ protected closeOpenSockets(): void; protected getSocketInstance(socket: Socket): TcpSocket; }