| import { EventEmitter } from "events"; |
| import type { IncomingMessage } from "http"; |
| import type { EngineRequest, Transport } from "./transport"; |
| import type { BaseServer } from "./server"; |
| import type { RawData } from "engine.io-parser"; |
| export interface SendOptions { |
| compress?: boolean; |
| } |
| type ReadyState = "opening" | "open" | "closing" | "closed"; |
| type SendCallback = (transport: Transport) => void; |
| export declare class Socket extends EventEmitter { |
| /** |
| * The revision of the protocol: |
| * |
| * - 3rd is used in Engine.IO v3 / Socket.IO v2 |
| * - 4th is used in Engine.IO v4 and above / Socket.IO v3 and above |
| * |
| * It is found in the `EIO` query parameters of the HTTP requests. |
| * |
| * @see https://github.com/socketio/engine.io-protocol |
| */ |
| readonly protocol: number; |
| /** |
| * A reference to the first HTTP request of the session |
| * |
| * TODO for the next major release: remove it |
| */ |
| request: IncomingMessage; |
| /** |
| * The IP address of the client. |
| */ |
| readonly remoteAddress: string; |
| /** |
| * The current state of the socket. |
| */ |
| _readyState: ReadyState; |
| /** |
| * The current low-level transport. |
| */ |
| transport: Transport; |
| private server; |
| upgrading: boolean; |
| upgraded: boolean; |
| 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); |
| constructor(id: string, server: BaseServer, transport: Transport, req: EngineRequest, protocol: number); |
| /** |
| * Called upon transport considered open. |
| * |
| * @private |
| */ |
| private onOpen; |
| /** |
| * Called upon transport packet. |
| * |
| * @param {Object} packet |
| * @private |
| */ |
| private onPacket; |
| /** |
| * Called upon transport error. |
| * |
| * @param {Error} err - error object |
| * @private |
| */ |
| private onError; |
| /** |
| * Pings client every `this.pingInterval` and expects response |
| * within `this.pingTimeout` or closes connection. |
| * |
| * @private |
| */ |
| private schedulePing; |
| /** |
| * Resets ping timeout. |
| * |
| * @private |
| */ |
| private resetPingTimeout; |
| /** |
| * Attaches handlers for the given transport. |
| * |
| * @param {Transport} transport |
| * @private |
| */ |
| private setTransport; |
| /** |
| * Upon transport "drain" event |
| * |
| * @private |
| */ |
| private onDrain; |
| /** |
| * Upgrades socket to the given transport |
| * |
| * @param {Transport} transport |
| * @private |
| */ |
| _maybeUpgrade(transport: Transport): void; |
| /** |
| * Clears listeners and timers associated with current transport. |
| * |
| * @private |
| */ |
| private clearTransport; |
| /** |
| * Called upon transport considered closed. |
| * Possible reasons: `ping timeout`, `client error`, `parse error`, |
| * `transport error`, `server close`, `transport close` |
| */ |
| private onClose; |
| /** |
| * Sends a message packet. |
| * |
| * @param {Object} data |
| * @param {Object} options |
| * @param {Function} callback |
| * @return {Socket} for chaining |
| */ |
| send(data: RawData, options?: SendOptions, callback?: SendCallback): this; |
| /** |
| * Alias of {@link send}. |
| * |
| * @param data |
| * @param options |
| * @param callback |
| */ |
| write(data: RawData, options?: SendOptions, callback?: SendCallback): this; |
| /** |
| * Sends a packet. |
| * |
| * @param {String} type - packet type |
| * @param {String} data |
| * @param {Object} options |
| * @param {Function} callback |
| * |
| * @private |
| */ |
| private sendPacket; |
| /** |
| * Attempts to flush the packets buffer. |
| * |
| * @private |
| */ |
| private flush; |
| /** |
| * Get available upgrades for this socket. |
| * |
| * @private |
| */ |
| private getAvailableUpgrades; |
| /** |
| * Closes the socket and underlying transport. |
| * |
| * @param {Boolean} discard - optional, discard the transport |
| * @return {Socket} for chaining |
| */ |
| close(discard?: boolean): void; |
| /** |
| * Closes the underlying transport. |
| * |
| * @param {Boolean} discard |
| * @private |
| */ |
| private closeTransport; |
| } |
| export {}; |