From cc67c2792e6108add29131a4701374534492b151 Mon Sep 17 00:00:00 2001 From: Andrey Sobolev Date: Thu, 26 Sep 2024 16:52:09 +0700 Subject: [PATCH] UBERF-8280: Ping properly from server (#6733) Signed-off-by: Andrey Sobolev --- server/server/src/client.ts | 2 ++ server/server/src/sessionManager.ts | 7 ++++++- server/server/src/types.ts | 1 + 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/server/server/src/client.ts b/server/server/src/client.ts index 3e394727e0..1001fa2e3a 100644 --- a/server/server/src/client.ts +++ b/server/server/src/client.ts @@ -57,6 +57,8 @@ export class ClientSession implements Session { sessionId = '' lastRequest = Date.now() + lastPing: number = Date.now() + total: StatisticsElement = { find: 0, tx: 0 } current: StatisticsElement = { find: 0, tx: 0 } mins5: StatisticsElement = { find: 0, tx: 0 } diff --git a/server/server/src/sessionManager.ts b/server/server/src/sessionManager.ts index b06aaa8dfb..67787b78a2 100644 --- a/server/server/src/sessionManager.ts +++ b/server/server/src/sessionManager.ts @@ -198,8 +198,13 @@ class TSessionManager implements SessionManager { void this.close(this.ctx, s[1].socket, wsId) continue } - if (lastRequestDiff + (1 / 10) * lastRequestDiff > this.timeouts.pingTimeout) { + if ( + lastRequestDiff + (1 / 10) * lastRequestDiff > this.timeouts.pingTimeout && + now - s[1].session.lastPing > this.timeouts.pingTimeout + ) { // We need to check state and close socket if it broken + // And ping other wize + s[1].session.lastPing = now if (s[1].socket.checkState()) { s[1].socket.send( workspace.context, diff --git a/server/server/src/types.ts b/server/server/src/types.ts index 385971678b..817f7dad40 100644 --- a/server/server/src/types.ts +++ b/server/server/src/types.ts @@ -74,6 +74,7 @@ export interface Session { mins5: StatisticsElement lastRequest: number + lastPing: number isUpgradeClient: () => boolean