123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.Transport = void 0;
- const events_1 = require("events");
- const parser_v4 = require("engine.io-parser");
- const parser_v3 = require("./parser-v3/index");
- const debug_1 = require("debug");
- const debug = (0, debug_1.default)("engine:transport");
- /**
- * Noop function.
- *
- * @api private
- */
- function noop() { }
- class Transport extends events_1.EventEmitter {
- /**
- * Transport constructor.
- *
- * @param {http.IncomingMessage} request
- * @api public
- */
- constructor(req) {
- super();
- this.readyState = "open";
- this.discarded = false;
- this.protocol = req._query.EIO === "4" ? 4 : 3; // 3rd revision by default
- this.parser = this.protocol === 4 ? parser_v4 : parser_v3;
- }
- get readyState() {
- return this._readyState;
- }
- set readyState(state) {
- debug("readyState updated from %s to %s (%s)", this._readyState, state, this.name);
- this._readyState = state;
- }
- /**
- * Flags the transport as discarded.
- *
- * @api private
- */
- discard() {
- this.discarded = true;
- }
- /**
- * Called with an incoming HTTP request.
- *
- * @param {http.IncomingMessage} request
- * @api protected
- */
- onRequest(req) {
- debug("setting request");
- this.req = req;
- }
- /**
- * Closes the transport.
- *
- * @api private
- */
- close(fn) {
- if ("closed" === this.readyState || "closing" === this.readyState)
- return;
- this.readyState = "closing";
- this.doClose(fn || noop);
- }
- /**
- * Called with a transport error.
- *
- * @param {String} message error
- * @param {Object} error description
- * @api protected
- */
- onError(msg, desc) {
- if (this.listeners("error").length) {
- const err = new Error(msg);
- // @ts-ignore
- err.type = "TransportError";
- // @ts-ignore
- err.description = desc;
- this.emit("error", err);
- }
- else {
- debug("ignored transport error %s (%s)", msg, desc);
- }
- }
- /**
- * Called with parsed out a packets from the data stream.
- *
- * @param {Object} packet
- * @api protected
- */
- onPacket(packet) {
- this.emit("packet", packet);
- }
- /**
- * Called with the encoded packet data.
- *
- * @param {String} data
- * @api protected
- */
- onData(data) {
- this.onPacket(this.parser.decodePacket(data));
- }
- /**
- * Called upon transport close.
- *
- * @api protected
- */
- onClose() {
- this.readyState = "closed";
- this.emit("close");
- }
- }
- exports.Transport = Transport;
|