/// import { EventEmitter } from "events"; import { IncomingMessage } from "http"; import { Transport } from "./transport"; import { RawData } from "engine.io-parser"; export interface SendOptions { compress?: boolean; } declare type ReadyState = "opening" | "open" | "closing" | "closed"; export declare class Socket extends EventEmitter { readonly protocol: number; readonly request: IncomingMessage; readonly remoteAddress: string; _readyState: ReadyState; transport: Transport; private server; private upgrading; private upgraded; private writeBuffer; private packetsFn; private sentCallbackFn; private cleanupFn; private pingTimeoutTimer; private pingIntervalTimer; /** * This is the session identifier that the client will use in the subsequent HTTP requests. It must not be shared with * others parties, as it might lead to session hijacking. * * @private */ private readonly id; get readyState(): ReadyState; set readyState(state: ReadyState); /** * Client class (abstract). * * @api private */ constructor(id: any, server: any, transport: any, req: any, protocol: any); /** * Called upon transport considered open. * * @api private */ private onOpen; /** * Called upon transport packet. * * @param {Object} packet * @api private */ private onPacket; /** * Called upon transport error. * * @param {Error} err - error object * @api private */ private onError; /** * Pings client every `this.pingInterval` and expects response * within `this.pingTimeout` or closes connection. * * @api private */ private schedulePing; /** * Resets ping timeout. * * @api private */ private resetPingTimeout; /** * Attaches handlers for the given transport. * * @param {Transport} transport * @api private */ private setTransport; /** * Upgrades socket to the given transport * * @param {Transport} transport * @api private */ private maybeUpgrade; /** * Clears listeners and timers associated with current transport. * * @api private */ private clearTransport; /** * Called upon transport considered closed. * Possible reasons: `ping timeout`, `client error`, `parse error`, * `transport error`, `server close`, `transport close` */ private onClose; /** * Setup and manage send callback * * @api private */ private setupSendCallback; /** * Sends a message packet. * * @param {Object} data * @param {Object} options * @param {Function} callback * @return {Socket} for chaining * @api public */ send(data: RawData, options?: SendOptions, callback?: () => void): this; /** * Alias of {@link send}. * * @param data * @param options * @param callback */ write(data: RawData, options?: SendOptions, callback?: () => void): this; /** * Sends a packet. * * @param {String} type - packet type * @param {String} data * @param {Object} options * @param {Function} callback * * @api private */ private sendPacket; /** * Attempts to flush the packets buffer. * * @api private */ private flush; /** * Get available upgrades for this socket. * * @api private */ private getAvailableUpgrades; /** * Closes the socket and underlying transport. * * @param {Boolean} discard - optional, discard the transport * @return {Socket} for chaining * @api public */ close(discard?: boolean): void; /** * Closes the underlying transport. * * @param {Boolean} discard * @api private */ private closeTransport; } export {};