Spaces:
Runtime error
Runtime error
| /// <reference types="node" /> | |
| import { EventEmitter } from "events"; | |
| import type { IncomingMessage, Server as HttpServer, ServerResponse } from "http"; | |
| import type { CookieSerializeOptions } from "cookie"; | |
| import type { CorsOptions, CorsOptionsDelegate } from "cors"; | |
| import type { Duplex } from "stream"; | |
| declare type Transport = "polling" | "websocket"; | |
| export interface AttachOptions { | |
| /** | |
| * name of the path to capture | |
| * @default "/engine.io" | |
| */ | |
| path?: string; | |
| /** | |
| * destroy unhandled upgrade requests | |
| * @default true | |
| */ | |
| destroyUpgrade?: boolean; | |
| /** | |
| * milliseconds after which unhandled requests are ended | |
| * @default 1000 | |
| */ | |
| destroyUpgradeTimeout?: number; | |
| /** | |
| * Whether we should add a trailing slash to the request path. | |
| * @default true | |
| */ | |
| addTrailingSlash?: boolean; | |
| } | |
| export interface ServerOptions { | |
| /** | |
| * how many ms without a pong packet to consider the connection closed | |
| * @default 20000 | |
| */ | |
| pingTimeout?: number; | |
| /** | |
| * how many ms before sending a new ping packet | |
| * @default 25000 | |
| */ | |
| pingInterval?: number; | |
| /** | |
| * how many ms before an uncompleted transport upgrade is cancelled | |
| * @default 10000 | |
| */ | |
| upgradeTimeout?: number; | |
| /** | |
| * how many bytes or characters a message can be, before closing the session (to avoid DoS). | |
| * @default 1e5 (100 KB) | |
| */ | |
| maxHttpBufferSize?: number; | |
| /** | |
| * A function that receives a given handshake or upgrade request as its first parameter, | |
| * and can decide whether to continue or not. The second argument is a function that needs | |
| * to be called with the decided information: fn(err, success), where success is a boolean | |
| * value where false means that the request is rejected, and err is an error code. | |
| */ | |
| allowRequest?: (req: IncomingMessage, fn: (err: string | null | undefined, success: boolean) => void) => void; | |
| /** | |
| * The low-level transports that are enabled. WebTransport is disabled by default and must be manually enabled: | |
| * | |
| * @example | |
| * new Server({ | |
| * transports: ["polling", "websocket", "webtransport"] | |
| * }); | |
| * | |
| * @default ["polling", "websocket"] | |
| */ | |
| transports?: Transport[]; | |
| /** | |
| * whether to allow transport upgrades | |
| * @default true | |
| */ | |
| allowUpgrades?: boolean; | |
| /** | |
| * parameters of the WebSocket permessage-deflate extension (see ws module api docs). Set to false to disable. | |
| * @default false | |
| */ | |
| perMessageDeflate?: boolean | object; | |
| /** | |
| * parameters of the http compression for the polling transports (see zlib api docs). Set to false to disable. | |
| * @default true | |
| */ | |
| httpCompression?: boolean | object; | |
| /** | |
| * what WebSocket server implementation to use. Specified module must | |
| * conform to the ws interface (see ws module api docs). | |
| * An alternative c++ addon is also available by installing eiows module. | |
| * | |
| * @default `require("ws").Server` | |
| */ | |
| wsEngine?: any; | |
| /** | |
| * an optional packet which will be concatenated to the handshake packet emitted by Engine.IO. | |
| */ | |
| initialPacket?: any; | |
| /** | |
| * configuration of the cookie that contains the client sid to send as part of handshake response headers. This cookie | |
| * might be used for sticky-session. Defaults to not sending any cookie. | |
| * @default false | |
| */ | |
| cookie?: (CookieSerializeOptions & { | |
| name: string; | |
| }) | boolean; | |
| /** | |
| * the options that will be forwarded to the cors module | |
| */ | |
| cors?: CorsOptions | CorsOptionsDelegate; | |
| /** | |
| * whether to enable compatibility with Socket.IO v2 clients | |
| * @default false | |
| */ | |
| allowEIO3?: boolean; | |
| } | |
| /** | |
| * An Express-compatible middleware. | |
| * | |
| * Middleware functions are functions that have access to the request object (req), the response object (res), and the | |
| * next middleware function in the application’s request-response cycle. | |
| * | |
| * @see https://expressjs.com/en/guide/using-middleware.html | |
| */ | |
| declare type Middleware = (req: IncomingMessage, res: ServerResponse, next: (err?: any) => void) => void; | |
| export declare abstract class BaseServer extends EventEmitter { | |
| opts: ServerOptions; | |
| protected clients: any; | |
| clientsCount: number; | |
| protected middlewares: Middleware[]; | |
| /** | |
| * Server constructor. | |
| * | |
| * @param {Object} opts - options | |
| * @api public | |
| */ | |
| constructor(opts?: ServerOptions); | |
| protected abstract init(): any; | |
| /** | |
| * Compute the pathname of the requests that are handled by the server | |
| * @param options | |
| * @protected | |
| */ | |
| protected _computePath(options: AttachOptions): string; | |
| /** | |
| * Returns a list of available transports for upgrade given a certain transport. | |
| * | |
| * @return {Array} | |
| * @api public | |
| */ | |
| upgrades(transport: any): any; | |
| /** | |
| * Verifies a request. | |
| * | |
| * @param {http.IncomingMessage} | |
| * @return {Boolean} whether the request is valid | |
| * @api private | |
| */ | |
| protected verify(req: any, upgrade: any, fn: any): any; | |
| /** | |
| * Adds a new middleware. | |
| * | |
| * @example | |
| * import helmet from "helmet"; | |
| * | |
| * engine.use(helmet()); | |
| * | |
| * @param fn | |
| */ | |
| use(fn: any): void; | |
| /** | |
| * Apply the middlewares to the request. | |
| * | |
| * @param req | |
| * @param res | |
| * @param callback | |
| * @protected | |
| */ | |
| protected _applyMiddlewares(req: IncomingMessage, res: ServerResponse, callback: (err?: any) => void): void; | |
| /** | |
| * Closes all clients. | |
| * | |
| * @api public | |
| */ | |
| close(): this; | |
| protected abstract cleanup(): any; | |
| /** | |
| * generate a socket id. | |
| * Overwrite this method to generate your custom socket id | |
| * | |
| * @param {Object} request object | |
| * @api public | |
| */ | |
| generateId(req: any): any; | |
| /** | |
| * Handshakes a new client. | |
| * | |
| * @param {String} transport name | |
| * @param {Object} request object | |
| * @param {Function} closeConnection | |
| * | |
| * @api protected | |
| */ | |
| protected handshake(transportName: any, req: any, closeConnection: any): Promise<any>; | |
| onWebTransportSession(session: any): Promise<any>; | |
| protected abstract createTransport(transportName: any, req: any): any; | |
| /** | |
| * Protocol errors mappings. | |
| */ | |
| static errors: { | |
| UNKNOWN_TRANSPORT: number; | |
| UNKNOWN_SID: number; | |
| BAD_HANDSHAKE_METHOD: number; | |
| BAD_REQUEST: number; | |
| FORBIDDEN: number; | |
| UNSUPPORTED_PROTOCOL_VERSION: number; | |
| }; | |
| static errorMessages: { | |
| 0: string; | |
| 1: string; | |
| 2: string; | |
| 3: string; | |
| 4: string; | |
| 5: string; | |
| }; | |
| } | |
| export declare class Server extends BaseServer { | |
| httpServer?: HttpServer; | |
| private ws; | |
| /** | |
| * Initialize websocket server | |
| * | |
| * @api protected | |
| */ | |
| protected init(): void; | |
| protected cleanup(): void; | |
| /** | |
| * Prepares a request by processing the query string. | |
| * | |
| * @api private | |
| */ | |
| private prepare; | |
| protected createTransport(transportName: any, req: any): any; | |
| /** | |
| * Handles an Engine.IO HTTP request. | |
| * | |
| * @param {IncomingMessage} req | |
| * @param {ServerResponse} res | |
| * @api public | |
| */ | |
| handleRequest(req: IncomingMessage, res: ServerResponse): void; | |
| /** | |
| * Handles an Engine.IO HTTP Upgrade. | |
| * | |
| * @api public | |
| */ | |
| handleUpgrade(req: IncomingMessage, socket: Duplex, upgradeHead: Buffer): void; | |
| /** | |
| * Called upon a ws.io connection. | |
| * | |
| * @param {ws.Socket} websocket | |
| * @api private | |
| */ | |
| private onWebSocket; | |
| /** | |
| * Captures upgrade requests for a http.Server. | |
| * | |
| * @param {http.Server} server | |
| * @param {Object} options | |
| * @api public | |
| */ | |
| attach(server: HttpServer, options?: AttachOptions): void; | |
| } | |
| export {}; | |