From d54d12ce634193d14b71894496ed57d35d922378 Mon Sep 17 00:00:00 2001 From: Damien Arrachequesne Date: Tue, 16 Nov 2021 19:10:56 +0100 Subject: [PATCH] fix: prevent socket from reconnecting after middleware failure Related: https://github.com/socketio/socket.io/discussions/4150 --- lib/socket.ts | 1 + test/socket.ts | 17 +++++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/lib/socket.ts b/lib/socket.ts index 17a71f73..a88a5433 100644 --- a/lib/socket.ts +++ b/lib/socket.ts @@ -322,6 +322,7 @@ export class Socket< break; case PacketType.CONNECT_ERROR: + this.destroy(); const err = new Error(packet.data.message); // @ts-ignore err.data = packet.data.data; diff --git a/test/socket.ts b/test/socket.ts index f46a6abf..47a65a7f 100644 --- a/test/socket.ts +++ b/test/socket.ts @@ -214,6 +214,23 @@ describe("socket", function () { }); }); + it("should not try to reconnect after a middleware failure", (done) => { + const socket = io("/no", { forceNew: true, reconnectionDelay: 10 }); + + let count = 0; + + socket.on("connect_error", () => { + count++; + // force reconnection + socket.io.engine.close(); + }); + + setTimeout(() => { + expect(count).to.eql(1); + done(); + }, 100); + }); + it("should throw on reserved event", () => { const socket = io("/no", { forceNew: true });