From 7ab559063e043d32fd1335fe715314041b3e4374 Mon Sep 17 00:00:00 2001 From: ThisIsEsh <13537179+ThisIsEsh@users.noreply.github.com> Date: Thu, 4 Apr 2024 20:18:57 +0300 Subject: [PATCH 1/3] Change sending commands logic, rely on transport state instead of client connected state --- src/centrifuge.ts | 43 ++++++++++++++++++------------------------- src/subscription.ts | 31 ++++++++++++++++++------------- 2 files changed, 36 insertions(+), 38 deletions(-) diff --git a/src/centrifuge.ts b/src/centrifuge.ts index 5fb29e62..1501e394 100644 --- a/src/centrifuge.ts +++ b/src/centrifuge.ts @@ -65,6 +65,7 @@ export class UnauthorizedError extends Error { /** Centrifuge is a Centrifuge/Centrifugo bidirectional client. */ export class Centrifuge extends (EventEmitter as new () => TypedEventEmitter) { state: State; + private _transportIsOpen: boolean; private _endpoint: string | Array; private _emulation: boolean; private _transports: any[]; @@ -111,6 +112,7 @@ export class Centrifuge extends (EventEmitter as new () => TypedEventEmitter, options?: Partial) { super(); this.state = State.Disconnected; + this._transportIsOpen = false; this._endpoint = endpoint; this._emulation = false; this._transports = []; @@ -409,6 +411,10 @@ export class Centrifuge extends (EventEmitter as new () => TypedEventEmitter TypedEventEmitter TypedEventEmitter TypedEventEmitter TypedEventEmitter TypedEventEmitter TypedEventEmitter TypedEventEmitter TypedEventEmitter TypedEventEmitter TypedEventEmitter TypedEventEmitter TypedEventEmitter TypedEventEmitter TypedEventEmitter { + this._centrifuge._call(cmd).then(resolveCtx => { this._inflight = false; // @ts-ignore - improve later. const result = resolveCtx.reply.subscribe; @@ -492,7 +497,7 @@ export class Subscription extends (EventEmitter as new () => TypedEventEmitter Date: Fri, 5 Apr 2024 16:11:07 +0300 Subject: [PATCH 2/3] Hide isTransportOpen from public API, do not send subscribe frames during disconnect --- src/centrifuge.ts | 6 +----- src/subscription.ts | 10 +++++++--- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/centrifuge.ts b/src/centrifuge.ts index 1501e394..2230dbd8 100644 --- a/src/centrifuge.ts +++ b/src/centrifuge.ts @@ -411,10 +411,6 @@ export class Centrifuge extends (EventEmitter as new () => TypedEventEmitter TypedEventEmitter TypedEventEmitter TypedEventEmitter TypedEventEmitter Date: Fri, 5 Apr 2024 16:42:13 +0300 Subject: [PATCH 3/3] Do not send subscribe frames during disconnect based only on _transportIsOpen flag --- src/centrifuge.ts | 5 +++-- src/subscription.ts | 4 +--- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/centrifuge.ts b/src/centrifuge.ts index 2230dbd8..f25e927b 100644 --- a/src/centrifuge.ts +++ b/src/centrifuge.ts @@ -1207,7 +1207,9 @@ export class Centrifuge extends (EventEmitter as new () => TypedEventEmitter TypedEventEmitter TypedEventEmitter