From 1da9cddeab0bf5ce41890d156d73af8194cef656 Mon Sep 17 00:00:00 2001 From: MiaoWoo Date: Wed, 27 Nov 2024 11:45:16 +0800 Subject: [PATCH] fix(eio-client): properly handle port option (#5241) Passing { port: "443" } would include the port in the URL (":443"). --- packages/engine.io-client/lib/transport.ts | 2 +- packages/engine.io-client/test/transport.js | 26 +++++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/packages/engine.io-client/lib/transport.ts b/packages/engine.io-client/lib/transport.ts index ba940715..ab72c709 100644 --- a/packages/engine.io-client/lib/transport.ts +++ b/packages/engine.io-client/lib/transport.ts @@ -192,7 +192,7 @@ export abstract class Transport extends Emitter< private _port() { if ( this.opts.port && - ((this.opts.secure && Number(this.opts.port !== 443)) || + ((this.opts.secure && Number(this.opts.port) !== 443) || (!this.opts.secure && Number(this.opts.port) !== 80)) ) { return ":" + this.opts.port; diff --git a/packages/engine.io-client/test/transport.js b/packages/engine.io-client/test/transport.js index 47016fc3..d89057c0 100644 --- a/packages/engine.io-client/test/transport.js +++ b/packages/engine.io-client/test/transport.js @@ -116,6 +116,32 @@ describe("Transport", () => { expect(polling.uri()).to.contain("https://localhost/engine.io?sid=test"); }); + it("should generate an https uri w/o a port (string)", () => { + const polling = new eio.transports.polling({ + path: "/engine.io", + hostname: "localhost", + secure: true, + query: { sid: "test" }, + port: "443", + timestampRequests: false, + }); + expect(polling.uri()).to.contain("https://localhost/engine.io?sid=test"); + }); + + it("should generate an https uri with a port", () => { + const polling = new eio.transports.polling({ + path: "/engine.io", + hostname: "localhost", + secure: true, + query: { sid: "test" }, + port: 8443, + timestampRequests: false, + }); + expect(polling.uri()).to.contain( + "https://localhost:8443/engine.io?sid=test", + ); + }); + it("should generate a timestamped uri", () => { const polling = new eio.transports.polling({ path: "/engine.io",