http-micro
Version:
Micro-framework on top of node's http module
40 lines (39 loc) • 1.79 kB
TypeScript
/// <reference types="node" />
import * as net from "net";
import * as http from "http";
import * as https from "https";
export declare type MicroServer = MicroHttpServer | MicroHttpsServer;
export declare type MicroHttpServer = http.Server & MicroServerExtensions;
export declare type MicroHttpsServer = https.Server & MicroServerExtensions;
export declare type MicroServerExtensions = IShutdown & {
micro: MicroExtensionContainer;
};
export declare type MicroExtensionContainer = {
shutdownManager: ShutdownManager;
clientErrorHandler: (err: any, socket: net.Socket) => void;
};
export declare function attachServerExtensions(server: http.Server | https.Server, socketErrorHandler?: (err: any, socket: net.Socket) => void): MicroServer;
export declare function detachServerExtensions(server: http.Server | https.Server): void;
export interface IShutdown {
shutdown: (gracePeriodMs?: number, callback?: Function) => void;
}
export declare type ShutdownListener = (isForcedExit: boolean) => void;
export declare class ShutdownManager implements IShutdown {
server: http.Server | https.Server;
socketRequestCountMap: Map<net.Socket, number>;
shutdownRequested: boolean;
private _shutdownListeners;
private _onConnectionBound;
private _onRequestBound;
private _destroySocketsBound;
constructor(server: http.Server | https.Server);
destroy(): void;
shutdown(gracePeriodMs?: number, callback?: ShutdownListener): void;
private _onConnection(socket);
private _onSocketClose(socket);
private _invokeAndResetShutdownListeners(isForcedExit);
private _onRequest(req, res);
private _onResponseFinished(socket);
private _destroySockets();
private _pushListener(listener);
}