From 1cc1893fefe5c7c9c69b9f6efde094b438e201b3 Mon Sep 17 00:00:00 2001 From: Alexander Zinchuk Date: Thu, 24 Jun 2021 18:42:20 +0300 Subject: [PATCH] GramJs: Avoid frequent reconnects --- src/lib/gramjs/client/TelegramClient.js | 19 ++++++++++++++----- src/lib/gramjs/tl/schemaTl.js | 1 + src/lib/gramjs/tl/static/schema.reduced.tl | 1 + 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/src/lib/gramjs/client/TelegramClient.js b/src/lib/gramjs/client/TelegramClient.js index 2e1406b12..9d418c764 100644 --- a/src/lib/gramjs/client/TelegramClient.js +++ b/src/lib/gramjs/client/TelegramClient.js @@ -24,7 +24,13 @@ const { updateTwoFaSettings } = require('./2fa'); const DEFAULT_DC_ID = 2; const DEFAULT_IPV4_IP = 'venus.web.telegram.org'; const DEFAULT_IPV6_IP = '[2001:67c:4e8:f002::a]'; -const BORROWED_SENDER_RELEASE_TIMEOUT = 30 * 1000; // 10 sec +const BORROWED_SENDER_RELEASE_TIMEOUT = 30000; // 30 sec + +const PING_INTERVAL = 3000; // 3 sec +const PING_TIMEOUT = 5000; // 5 sec +const PING_FAIL_ATTEMPTS = 3; +const PING_FAIL_INTERVAL = 100; // ms +const PING_DISCONNECT_DELAY = 60000; // 1 min // All types const sizeTypes = ['w', 'y', 'd', 'x', 'c', 'm', 'b', 'a', 's']; @@ -185,15 +191,18 @@ class TelegramClient { async _updateLoop() { while (this.isConnected()) { - await Helpers.sleep(3 * 1000); + await Helpers.sleep(PING_INTERVAL); try { await attempts(() => { - return timeout(this._sender.send(new requests.Ping({ + return timeout(this._sender.send(new requests.PingDelayDisconnect({ pingId: Helpers.getRandomInt(Number.MIN_SAFE_INTEGER, Number.MAX_SAFE_INTEGER), - })), 1500); - }, 3, 100); + disconnectDelay: PING_DISCONNECT_DELAY, + })), PING_TIMEOUT); + }, PING_FAIL_ATTEMPTS, PING_FAIL_INTERVAL); } catch (err) { + console.error('!!!', err); + await this.disconnect(); this.connect(); diff --git a/src/lib/gramjs/tl/schemaTl.js b/src/lib/gramjs/tl/schemaTl.js index d9b064472..677d0c820 100644 --- a/src/lib/gramjs/tl/schemaTl.js +++ b/src/lib/gramjs/tl/schemaTl.js @@ -35,4 +35,5 @@ destroy_session_none#62d350c9 session_id:long = DestroySessionRes; new_session_created#9ec20908 first_msg_id:long unique_id:long server_salt:long = NewSession; ---functions--- ping#7abe77ec ping_id:long = Pong; +ping_delay_disconnect#f3427b8c ping_id:long disconnect_delay:int = Pong; `; \ No newline at end of file diff --git a/src/lib/gramjs/tl/static/schema.reduced.tl b/src/lib/gramjs/tl/static/schema.reduced.tl index c62d662a5..f48bd4bfc 100644 --- a/src/lib/gramjs/tl/static/schema.reduced.tl +++ b/src/lib/gramjs/tl/static/schema.reduced.tl @@ -35,3 +35,4 @@ destroy_session_none#62d350c9 session_id:long = DestroySessionRes; new_session_created#9ec20908 first_msg_id:long unique_id:long server_salt:long = NewSession; ---functions--- ping#7abe77ec ping_id:long = Pong; +ping_delay_disconnect#f3427b8c ping_id:long disconnect_delay:int = Pong;