123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180 |
- 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 {};
|