From d8ad237b00f9db7239473702a268d216d7d135be Mon Sep 17 00:00:00 2001 From: Jaco Date: Tue, 22 Mar 2022 07:54:42 +0100 Subject: [PATCH] Add total.bytes{Recv, Sent} to provider stats (#4671) --- packages/rpc-provider/src/http/index.ts | 10 +++++++--- packages/rpc-provider/src/types.ts | 2 ++ packages/rpc-provider/src/ws/index.ts | 6 ++++-- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/packages/rpc-provider/src/http/index.ts b/packages/rpc-provider/src/http/index.ts index 1c4ffc9735..6dac380bb1 100644 --- a/packages/rpc-provider/src/http/index.ts +++ b/packages/rpc-provider/src/http/index.ts @@ -56,7 +56,7 @@ export class HttpProvider implements ProviderInterface { this.#headers = headers; this.#stats = { active: { requests: 0, subscriptions: 0 }, - total: { cached: 0, requests: 0, subscriptions: 0, timeout: 0 } + total: { bytesRecv: 0, bytesSent: 0, cached: 0, requests: 0, subscriptions: 0, timeout: 0 } }; } @@ -142,6 +142,7 @@ export class HttpProvider implements ProviderInterface { async #send (body: string): Promise { this.#stats.active.requests++; + this.#stats.total.bytesSent += body.length; try { const response = await fetch(this.#endpoint, { @@ -157,8 +158,11 @@ export class HttpProvider implements ProviderInterface { assert(response.ok, () => `[${response.status}]: ${response.statusText}`); - const result = (await response.json()) as JsonRpcResponse; - const decoded = this.#coder.decodeResponse(result) as T; + const result = await response.text(); + + this.#stats.total.bytesRecv += result.length; + + const decoded = this.#coder.decodeResponse(JSON.parse(result) as JsonRpcResponse) as T; this.#stats.active.requests--; diff --git a/packages/rpc-provider/src/types.ts b/packages/rpc-provider/src/types.ts index 040e631a47..09aa91a11c 100644 --- a/packages/rpc-provider/src/types.ts +++ b/packages/rpc-provider/src/types.ts @@ -68,6 +68,8 @@ export interface ProviderStats { subscriptions: number; }; total: { + bytesRecv: number; + bytesSent: number; cached: number; requests: number; subscriptions: number; diff --git a/packages/rpc-provider/src/ws/index.ts b/packages/rpc-provider/src/ws/index.ts index 5003f32288..ac534a477d 100644 --- a/packages/rpc-provider/src/ws/index.ts +++ b/packages/rpc-provider/src/ws/index.ts @@ -133,7 +133,7 @@ export class WsProvider implements ProviderInterface { this.#websocket = null; this.#stats = { active: { requests: 0, subscriptions: 0 }, - total: { cached: 0, requests: 0, subscriptions: 0, timeout: 0 } + total: { bytesRecv: 0, bytesSent: 0, cached: 0, requests: 0, subscriptions: 0, timeout: 0 } }; if (autoConnectMs > 0) { @@ -333,7 +333,7 @@ export class WsProvider implements ProviderInterface { start: Date.now(), subscription }; - + this.#stats.total.bytesSent += json.length; this.#websocket.send(json); } catch (error) { reject(error); @@ -444,6 +444,8 @@ export class WsProvider implements ProviderInterface { #onSocketMessage = (message: MessageEvent): void => { l.debug(() => ['received', message.data]); + this.#stats.total.bytesRecv += message.data.length; + const response = JSON.parse(message.data) as JsonRpcResponse; return isUndefined(response.method)