mirror of
https://github.com/gosticks/DefinitelyTyped.git
synced 2025-10-16 12:05:41 +00:00
231 lines
6.9 KiB
TypeScript
231 lines
6.9 KiB
TypeScript
// Type definitions for engine.io 3.1
|
|
// Project: https://github.com/socketio/engine.io
|
|
// Definitions by: KentarouTakeda <https://github.com/KentarouTakeda>
|
|
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
|
|
// TypeScript Version: 2.1
|
|
|
|
/// <reference types="node" />
|
|
|
|
import http = require('http');
|
|
import net = require('net');
|
|
import { EventEmitter } from "events";
|
|
|
|
declare namespace engine {
|
|
type Message = string|Buffer|ArrayBuffer|ArrayBufferView;
|
|
type Transport = "polling"|"websocket";
|
|
interface Packet {
|
|
type: string;
|
|
options?: MessageOptions;
|
|
data?: Message;
|
|
}
|
|
type AllowRequestFunction = (req: http.IncomingMessage, fn: (err: string|null|undefined, success: boolean) => void) => void;
|
|
|
|
interface ServerOptions {
|
|
/**
|
|
* how many ms without a pong packet to consider the connection closed (60000)
|
|
*/
|
|
pingTimeout?: number;
|
|
/**
|
|
* how many ms before sending a new ping packet (25000)
|
|
*/
|
|
pingInterval?: number;
|
|
/**
|
|
* how many ms before an uncompleted transport upgrade is cancelled (10000)
|
|
*/
|
|
upgradeTimeout?: number;
|
|
/**
|
|
* how many bytes or characters a message can be, before closing the session (to avoid DoS). Default value is 10E7.
|
|
*/
|
|
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?: AllowRequestFunction;
|
|
/**
|
|
* to allow connections to (['polling', 'websocket'])
|
|
*/
|
|
transports?: Transport[];
|
|
/**
|
|
* whether to allow transport upgrades (true)
|
|
*/
|
|
allowUpgrades?: boolean;
|
|
/**
|
|
* parameters of the WebSocket permessage-deflate extension (see ws module api docs). Set to false to disable. (true)
|
|
*/
|
|
perMessageDeflate?: any;
|
|
/**
|
|
* parameters of the http compression for the polling transports (see zlib api docs). Set to false to disable. (true)
|
|
*/
|
|
httpCompression?: any;
|
|
/**
|
|
* name of the HTTP cookie that contains the client sid to send as part of handshake response headers. Set to false to not send one. (io)
|
|
*/
|
|
cookie?: string|boolean;
|
|
/**
|
|
* path of the above cookie option. If false, no path will be sent,
|
|
* which means browsers will only send the cookie on the engine.io
|
|
* attached path (/engine.io). Set false to not save io cookie
|
|
* on all requests. (/)
|
|
*/
|
|
cookiePath?: string|boolean;
|
|
/**
|
|
* If true HttpOnly io cookie cannot be accessed by client-side APIs,
|
|
* such as JavaScript. (true) This option has no effect
|
|
* if cookie or cookiePath is set to false.
|
|
*/
|
|
cookieHttpOnly?: boolean;
|
|
/**
|
|
* what WebSocket server implementation to use. Specified module must
|
|
* conform to the ws interface (see ws module api docs). Default value is ws.
|
|
* An alternative c++ addon is also available by installing uws module.
|
|
*/
|
|
wsEngine?: "ws"|"uws";
|
|
/**
|
|
* an optional packet which will be concatenated to the handshake packet emitted by Engine.IO.
|
|
*/
|
|
initialPacket?: Message;
|
|
}
|
|
interface AttachOptions {
|
|
/**
|
|
* name of the path to capture (/engine.io).
|
|
*/
|
|
path?: string;
|
|
/**
|
|
* destroy unhandled upgrade requests (true)
|
|
*/
|
|
destroyUpgrade?: boolean;
|
|
/**
|
|
* milliseconds after which unhandled requests are ended (1000)
|
|
*/
|
|
destroyUpgradeTimeout?: number;
|
|
/**
|
|
* whether to let engine.io handle the OPTIONS requests. You can also pass a custom function to handle the requests (true)
|
|
*/
|
|
handlePreflightRequest?: boolean|((server: Server, req: http.IncomingMessage, res: http.ServerResponse) => void);
|
|
}
|
|
interface ServerAttachOptions extends ServerOptions, AttachOptions {}
|
|
|
|
interface MessageOptions {
|
|
compress?: boolean;
|
|
}
|
|
|
|
/**
|
|
* The main server/manager. Inherits from EventEmitter.
|
|
*/
|
|
class Server extends EventEmitter {
|
|
/**
|
|
* hash of connected clients by id.
|
|
*/
|
|
clients: {[sid: string]: Socket};
|
|
/**
|
|
* number of connected clients.
|
|
*/
|
|
clientsCount: number;
|
|
|
|
/**
|
|
* Initializes the server
|
|
*/
|
|
constructor(opts?: ServerOptions);
|
|
/**
|
|
* Fired when a new connection is established.
|
|
*/
|
|
on(ev: 'connection'|'drain', fn: (socket: Socket) => void): this;
|
|
on(ev: 'flush', fn: (socket: Socket, buffer: Packet[]) => void): this;
|
|
/**
|
|
* Closes all clients
|
|
*/
|
|
close(): this;
|
|
readonly httpServer?: http.Server;
|
|
/**
|
|
* Called internally when a Engine request is intercepted.
|
|
*/
|
|
handleRequest(req: http.IncomingMessage, res: http.ServerResponse): this;
|
|
/**
|
|
* Called internally when a Engine ws upgrade is intercepted.
|
|
*/
|
|
handleUpgrade(req: http.IncomingMessage, socket: net.Socket, head: Buffer): this;
|
|
/**
|
|
* Attach this Server instance to an http.Server
|
|
* Captures upgrade requests for a http.Server. In other words, makes a regular http.Server WebSocket-compatible.
|
|
*/
|
|
attach(http: http.Server, opts?: AttachOptions): this;
|
|
/**
|
|
* Generate a socket id.
|
|
* Overwrite this method to generate your custom socket id.
|
|
*/
|
|
generateId(req: http.IncomingMessage): string;
|
|
}
|
|
|
|
/**
|
|
* A representation of a client. Inherits from EventEmitter.
|
|
*/
|
|
class Socket extends EventEmitter {
|
|
/**
|
|
* unique identifier
|
|
*/
|
|
id: string;
|
|
/**
|
|
* engine parent reference
|
|
*/
|
|
server: Server;
|
|
/**
|
|
* request that originated the Socket
|
|
*/
|
|
request: http.IncomingMessage;
|
|
/**
|
|
* whether the transport has been upgraded
|
|
*/
|
|
upgraded: boolean;
|
|
/**
|
|
* readyState
|
|
*/
|
|
readyState: 'opening'|'open'|'closing'|'closed';
|
|
|
|
/**
|
|
* Sends a message, performing message = toString(arguments[0]) unless sending binary data, which is sent as is.
|
|
*/
|
|
send(message: Message, opts?: MessageOptions, fn?: ((transport: any) => void)): void;
|
|
|
|
/**
|
|
* Disconnects the client
|
|
*/
|
|
close(): this;
|
|
|
|
/**
|
|
* Fired when the client is disconnected.
|
|
*/
|
|
on(ev: "close", fn: (reason: string, description?: Error) => void): this;
|
|
/**
|
|
* Fired when the client sends a message.
|
|
*/
|
|
on(ev: "message", fn: (data: string|Buffer) => void): this;
|
|
/**
|
|
* Fired when an error occurs.
|
|
*/
|
|
on(ev: "error", fn: (err: Error) => void): this;
|
|
/**
|
|
* Called when the write buffer is being flushed.
|
|
*/
|
|
on(ev: "flush", fn: (buffer: Packet[]) => void): this;
|
|
/**
|
|
* Called when the write buffer is drained
|
|
*/
|
|
on(ev: "drain", fn: () => void): this;
|
|
/**
|
|
* packet: Called when a socket received a packet (message, ping)
|
|
* packetCreate: Called before a socket sends a packet (message, pong)
|
|
*/
|
|
on(ev: "packet" | "packetCreate", fn: (packet: Packet) => void): this;
|
|
}
|
|
function attach(http: net.Server, opts?: ServerAttachOptions): Server;
|
|
function listen(port: number, opts?: ServerOptions, fn?: () => void): Server;
|
|
const protocol: number;
|
|
}
|
|
|
|
declare function engine(httpServer?: net.Server, opts?: engine.ServerOptions): engine.Server;
|
|
|
|
export = engine;
|