From b7dd891e890461d33a104ca9187d5cd30d6f76af Mon Sep 17 00:00:00 2001 From: Damien Arrachequesne Date: Fri, 3 Feb 2023 08:03:21 +0100 Subject: [PATCH] fix: ensure manager.socket() returns an active socket Related: https://github.com/socketio/socket.io-client/issues/1460 --- lib/manager.ts | 4 ++++ test/connection.ts | 24 ++++++++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/lib/manager.ts b/lib/manager.ts index da2d3261..5a705977 100644 --- a/lib/manager.ts +++ b/lib/manager.ts @@ -467,6 +467,10 @@ export class Manager< this.nsps[nsp] = socket; } + if (this._autoConnect) { + socket.connect(); + } + return socket; } diff --git a/test/connection.ts b/test/connection.ts index 9de5adcc..af0215de 100644 --- a/test/connection.ts +++ b/test/connection.ts @@ -814,4 +814,28 @@ describe("connection", () => { }); }); } + + it("should reopen a cached socket", () => { + return wrap((done) => { + const manager = new Manager(BASE_URL, { + autoConnect: true, + }); + const socket = manager.socket("/"); + socket.on("connect", () => { + socket.disconnect(); + }); + + socket.on("disconnect", () => { + const socket2 = manager.socket("/"); + + expect(socket2 === socket).to.be(true); + expect(socket2.active).to.be(true); + + socket2.on("connect", () => { + socket2.disconnect(); + done(); + }); + }); + }); + }); });