From 2287efdd1ed35cf54b92e4066c33335c5a9cdd9d Mon Sep 17 00:00:00 2001 From: Benjie Date: Wed, 25 Jan 2023 01:11:48 +0000 Subject: [PATCH] Fix legacyMode/pingInterval issue (#2386) * Add a test for legacyMode pingInterval * Apply patch to fix legacy mode ping interval * use this.#sendCommand instead of this.#v4 Co-authored-by: Leibale --- packages/client/lib/client/index.spec.ts | 13 +++++++++++++ packages/client/lib/client/index.ts | 3 ++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/packages/client/lib/client/index.spec.ts b/packages/client/lib/client/index.spec.ts index 63200bf82d..a6cd7fd4b8 100644 --- a/packages/client/lib/client/index.spec.ts +++ b/packages/client/lib/client/index.spec.ts @@ -341,6 +341,19 @@ describe('Client', () => { legacyMode: true } }); + + testUtils.testWithClient('pingInterval', async client => { + assert.deepEqual( + await once(client, 'ping-interval'), + ['PONG'] + ); + }, { + ...GLOBAL.SERVERS.OPEN, + clientOptions: { + legacyMode: true, + pingInterval: 1 + } + }); }); describe('events', () => { diff --git a/packages/client/lib/client/index.ts b/packages/client/lib/client/index.ts index 8c5a23db44..f1e83edb41 100644 --- a/packages/client/lib/client/index.ts +++ b/packages/client/lib/client/index.ts @@ -362,7 +362,8 @@ export default class RedisClient< this.#pingTimer = setTimeout(() => { if (!this.#socket.isReady) return; - (this as unknown as RedisClientType).ping() + // using #sendCommand to support legacy mode + this.#sendCommand(['PING']) .then(reply => this.emit('ping-interval', reply)) .catch(err => this.emit('error', err)) .finally(() => this.#setPingTimer());