1 | /// <reference types="node" />
|
---|
2 | import { EventEmitter } from "events";
|
---|
3 | import { IncomingMessage, Server as HttpServer } from "http";
|
---|
4 | import { CookieSerializeOptions } from "cookie";
|
---|
5 | import { CorsOptions } from "cors";
|
---|
6 | declare type Transport = "polling" | "websocket";
|
---|
7 | export interface AttachOptions {
|
---|
8 | /**
|
---|
9 | * name of the path to capture
|
---|
10 | * @default "/engine.io"
|
---|
11 | */
|
---|
12 | path?: string;
|
---|
13 | /**
|
---|
14 | * destroy unhandled upgrade requests
|
---|
15 | * @default true
|
---|
16 | */
|
---|
17 | destroyUpgrade?: boolean;
|
---|
18 | /**
|
---|
19 | * milliseconds after which unhandled requests are ended
|
---|
20 | * @default 1000
|
---|
21 | */
|
---|
22 | destroyUpgradeTimeout?: number;
|
---|
23 | }
|
---|
24 | export interface ServerOptions {
|
---|
25 | /**
|
---|
26 | * how many ms without a pong packet to consider the connection closed
|
---|
27 | * @default 20000
|
---|
28 | */
|
---|
29 | pingTimeout?: number;
|
---|
30 | /**
|
---|
31 | * how many ms before sending a new ping packet
|
---|
32 | * @default 25000
|
---|
33 | */
|
---|
34 | pingInterval?: number;
|
---|
35 | /**
|
---|
36 | * how many ms before an uncompleted transport upgrade is cancelled
|
---|
37 | * @default 10000
|
---|
38 | */
|
---|
39 | upgradeTimeout?: number;
|
---|
40 | /**
|
---|
41 | * how many bytes or characters a message can be, before closing the session (to avoid DoS).
|
---|
42 | * @default 1e5 (100 KB)
|
---|
43 | */
|
---|
44 | maxHttpBufferSize?: number;
|
---|
45 | /**
|
---|
46 | * A function that receives a given handshake or upgrade request as its first parameter,
|
---|
47 | * and can decide whether to continue or not. The second argument is a function that needs
|
---|
48 | * to be called with the decided information: fn(err, success), where success is a boolean
|
---|
49 | * value where false means that the request is rejected, and err is an error code.
|
---|
50 | */
|
---|
51 | allowRequest?: (req: IncomingMessage, fn: (err: string | null | undefined, success: boolean) => void) => void;
|
---|
52 | /**
|
---|
53 | * the low-level transports that are enabled
|
---|
54 | * @default ["polling", "websocket"]
|
---|
55 | */
|
---|
56 | transports?: Transport[];
|
---|
57 | /**
|
---|
58 | * whether to allow transport upgrades
|
---|
59 | * @default true
|
---|
60 | */
|
---|
61 | allowUpgrades?: boolean;
|
---|
62 | /**
|
---|
63 | * parameters of the WebSocket permessage-deflate extension (see ws module api docs). Set to false to disable.
|
---|
64 | * @default false
|
---|
65 | */
|
---|
66 | perMessageDeflate?: boolean | object;
|
---|
67 | /**
|
---|
68 | * parameters of the http compression for the polling transports (see zlib api docs). Set to false to disable.
|
---|
69 | * @default true
|
---|
70 | */
|
---|
71 | httpCompression?: boolean | object;
|
---|
72 | /**
|
---|
73 | * what WebSocket server implementation to use. Specified module must
|
---|
74 | * conform to the ws interface (see ws module api docs).
|
---|
75 | * An alternative c++ addon is also available by installing eiows module.
|
---|
76 | *
|
---|
77 | * @default `require("ws").Server`
|
---|
78 | */
|
---|
79 | wsEngine?: any;
|
---|
80 | /**
|
---|
81 | * an optional packet which will be concatenated to the handshake packet emitted by Engine.IO.
|
---|
82 | */
|
---|
83 | initialPacket?: any;
|
---|
84 | /**
|
---|
85 | * configuration of the cookie that contains the client sid to send as part of handshake response headers. This cookie
|
---|
86 | * might be used for sticky-session. Defaults to not sending any cookie.
|
---|
87 | * @default false
|
---|
88 | */
|
---|
89 | cookie?: (CookieSerializeOptions & {
|
---|
90 | name: string;
|
---|
91 | }) | boolean;
|
---|
92 | /**
|
---|
93 | * the options that will be forwarded to the cors module
|
---|
94 | */
|
---|
95 | cors?: CorsOptions;
|
---|
96 | /**
|
---|
97 | * whether to enable compatibility with Socket.IO v2 clients
|
---|
98 | * @default false
|
---|
99 | */
|
---|
100 | allowEIO3?: boolean;
|
---|
101 | }
|
---|
102 | export declare abstract class BaseServer extends EventEmitter {
|
---|
103 | opts: ServerOptions;
|
---|
104 | protected clients: any;
|
---|
105 | private clientsCount;
|
---|
106 | protected corsMiddleware: Function;
|
---|
107 | /**
|
---|
108 | * Server constructor.
|
---|
109 | *
|
---|
110 | * @param {Object} opts - options
|
---|
111 | * @api public
|
---|
112 | */
|
---|
113 | constructor(opts?: ServerOptions);
|
---|
114 | protected abstract init(): any;
|
---|
115 | /**
|
---|
116 | * Returns a list of available transports for upgrade given a certain transport.
|
---|
117 | *
|
---|
118 | * @return {Array}
|
---|
119 | * @api public
|
---|
120 | */
|
---|
121 | upgrades(transport: any): any;
|
---|
122 | /**
|
---|
123 | * Verifies a request.
|
---|
124 | *
|
---|
125 | * @param {http.IncomingMessage}
|
---|
126 | * @return {Boolean} whether the request is valid
|
---|
127 | * @api private
|
---|
128 | */
|
---|
129 | protected verify(req: any, upgrade: any, fn: any): any;
|
---|
130 | /**
|
---|
131 | * Closes all clients.
|
---|
132 | *
|
---|
133 | * @api public
|
---|
134 | */
|
---|
135 | close(): this;
|
---|
136 | protected abstract cleanup(): any;
|
---|
137 | /**
|
---|
138 | * generate a socket id.
|
---|
139 | * Overwrite this method to generate your custom socket id
|
---|
140 | *
|
---|
141 | * @param {Object} request object
|
---|
142 | * @api public
|
---|
143 | */
|
---|
144 | generateId(req: any): any;
|
---|
145 | /**
|
---|
146 | * Handshakes a new client.
|
---|
147 | *
|
---|
148 | * @param {String} transport name
|
---|
149 | * @param {Object} request object
|
---|
150 | * @param {Function} closeConnection
|
---|
151 | *
|
---|
152 | * @api protected
|
---|
153 | */
|
---|
154 | protected handshake(transportName: any, req: any, closeConnection: any): Promise<any>;
|
---|
155 | protected abstract createTransport(transportName: any, req: any): any;
|
---|
156 | /**
|
---|
157 | * Protocol errors mappings.
|
---|
158 | */
|
---|
159 | static errors: {
|
---|
160 | UNKNOWN_TRANSPORT: number;
|
---|
161 | UNKNOWN_SID: number;
|
---|
162 | BAD_HANDSHAKE_METHOD: number;
|
---|
163 | BAD_REQUEST: number;
|
---|
164 | FORBIDDEN: number;
|
---|
165 | UNSUPPORTED_PROTOCOL_VERSION: number;
|
---|
166 | };
|
---|
167 | static errorMessages: {
|
---|
168 | 0: string;
|
---|
169 | 1: string;
|
---|
170 | 2: string;
|
---|
171 | 3: string;
|
---|
172 | 4: string;
|
---|
173 | 5: string;
|
---|
174 | };
|
---|
175 | }
|
---|
176 | export declare class Server extends BaseServer {
|
---|
177 | httpServer?: HttpServer;
|
---|
178 | private ws;
|
---|
179 | /**
|
---|
180 | * Initialize websocket server
|
---|
181 | *
|
---|
182 | * @api protected
|
---|
183 | */
|
---|
184 | protected init(): void;
|
---|
185 | protected cleanup(): void;
|
---|
186 | /**
|
---|
187 | * Prepares a request by processing the query string.
|
---|
188 | *
|
---|
189 | * @api private
|
---|
190 | */
|
---|
191 | private prepare;
|
---|
192 | protected createTransport(transportName: any, req: any): any;
|
---|
193 | /**
|
---|
194 | * Handles an Engine.IO HTTP request.
|
---|
195 | *
|
---|
196 | * @param {http.IncomingMessage} request
|
---|
197 | * @param {http.ServerResponse|http.OutgoingMessage} response
|
---|
198 | * @api public
|
---|
199 | */
|
---|
200 | handleRequest(req: any, res: any): void;
|
---|
201 | /**
|
---|
202 | * Handles an Engine.IO HTTP Upgrade.
|
---|
203 | *
|
---|
204 | * @api public
|
---|
205 | */
|
---|
206 | handleUpgrade(req: any, socket: any, upgradeHead: any): void;
|
---|
207 | /**
|
---|
208 | * Called upon a ws.io connection.
|
---|
209 | *
|
---|
210 | * @param {ws.Socket} websocket
|
---|
211 | * @api private
|
---|
212 | */
|
---|
213 | private onWebSocket;
|
---|
214 | /**
|
---|
215 | * Captures upgrade requests for a http.Server.
|
---|
216 | *
|
---|
217 | * @param {http.Server} server
|
---|
218 | * @param {Object} options
|
---|
219 | * @api public
|
---|
220 | */
|
---|
221 | attach(server: HttpServer, options?: AttachOptions): void;
|
---|
222 | }
|
---|
223 | export {};
|
---|