From e9ede4b00a3290410ca341a098a1f42d0068acc6 Mon Sep 17 00:00:00 2001 From: CombatPug Date: Thu, 29 Aug 2024 18:33:03 +0200 Subject: [PATCH 1/5] upgrade socket.io package --- package.json | 4 +--- src/Data/Data.ts | 8 ++++---- src/archivedCycle/StateMetaData.ts | 11 +++++++---- 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/package.json b/package.json index 80e761eb..8145e627 100644 --- a/package.json +++ b/package.json @@ -53,8 +53,6 @@ "@types/node": "18.16.1", "@types/node-cron": "3.0.7", "@types/node-fetch": "^2.5.4", - "@types/socket.io": "^2.1.11", - "@types/socket.io-client": "^1.4.33", "@typescript-eslint/eslint-plugin": "^5.60.0", "@typescript-eslint/typescript-estree": "^5.60.0", "eslint": "^8.43.0", @@ -90,7 +88,7 @@ "node-cron": "3.0.2", "node-fetch": "^2.6.8", "rfdc": "^1.3.0", - "socket.io-client": "^2.3.0", + "socket.io-client": "^4.7.5", "sqlite3": "^5.0.0", "streamroller": "^3.1.3", "tydb": "^0.1.5" diff --git a/src/Data/Data.ts b/src/Data/Data.ts index 2c77af9d..a8c5cfe9 100644 --- a/src/Data/Data.ts +++ b/src/Data/Data.ts @@ -35,14 +35,14 @@ import * as StateMetaData from '../archivedCycle/StateMetaData' import fetch from 'node-fetch' import { syncV2 } from '../sync-v2' import { queryFromArchivers, RequestDataType } from '../API' -import ioclient = require('socket.io-client') +import { Socket, io } from 'socket.io-client'; import { Transaction } from '../dbstore/transactions' import { AccountsCopy } from '../dbstore/accounts' import { getJson } from '../P2P' import { robustQuery } from '../Utils' import { Utils as StringUtils } from '@shardus/types' -export const socketClients: Map = new Map() +export const socketClients: Map = new Map() export let combineAccountsData = { accounts: [], receipts: [], @@ -191,7 +191,7 @@ export async function unsubscribeDataSender( export function initSocketClient(node: NodeList.ConsensusNodeInfo): void { if (config.VERBOSE) Logger.mainLogger.debug('Node Info to socket connect', node) - const socketClient = ioclient.connect(`http://${node.ip}:${node.port}`) + const socketClient = io(`http://${node.ip}:${node.port}`); socketClients.set(node.publicKey, socketClient) let archiverKeyisEmitted = false @@ -976,7 +976,7 @@ export async function getCycleDuration(): Promise { } /* - checkJoinStatus checks if the current archiver node is joined to a network. + checkJoinStatus checks if the current archiver node is joined to a network. This queries by the /joinedArchiver endpoint on the nodes and returns joining status based on majority response. */ export async function checkJoinStatus(activeNodes: NodeList.ConsensusNodeInfo[]): Promise { diff --git a/src/archivedCycle/StateMetaData.ts b/src/archivedCycle/StateMetaData.ts index 1a34fc96..6e1e20a0 100644 --- a/src/archivedCycle/StateMetaData.ts +++ b/src/archivedCycle/StateMetaData.ts @@ -31,13 +31,16 @@ import { P2P as P2PTypes, StateManager } from '@shardus/types' import * as Logger from '../Logger' import { nestedCountersInstance } from '../profiler/nestedCounters' import { profilerInstance } from '../profiler/profiler' +import { Node } from '../ShardFunctions' // Socket modules -export let socketServer: SocketIO.Server +import { Socket } from "socket.io-client"; +import {Server} from "http"; +export let socketServer: Server import * as ioclient from 'socket.io-client' import { Utils as StringUtils } from '@shardus/types' -let socketClient: SocketIOClientStatic['Socket'] -export const socketClients: Map = new Map() +let socketClient: Socket +export const socketClients: Map = new Map() const socketConnectionsTracker: Map = new Map() let lastSentCycleCounterToExplorer = 0 @@ -113,7 +116,7 @@ interface NodeWithPort extends Node { export const StateMetaDataMap = new Map() export let currentDataSender = '' -export function initSocketServer(io: SocketIO.Server): void { +export function initSocketServer(io: Server): void { socketServer = io //`socket: SocketIO.Socket` removed as an argument socketServer.on('connection', () => { From 2e9c698dfed5cb38df0a0b6178e5e3ce782f7eb1 Mon Sep 17 00:00:00 2001 From: CombatPug Date: Thu, 29 Aug 2024 18:38:18 +0200 Subject: [PATCH 2/5] formatting --- src/archivedCycle/StateMetaData.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/archivedCycle/StateMetaData.ts b/src/archivedCycle/StateMetaData.ts index 6e1e20a0..36ba6a0c 100644 --- a/src/archivedCycle/StateMetaData.ts +++ b/src/archivedCycle/StateMetaData.ts @@ -34,8 +34,9 @@ import { profilerInstance } from '../profiler/profiler' import { Node } from '../ShardFunctions' // Socket modules -import { Socket } from "socket.io-client"; -import {Server} from "http"; +import { Socket } from 'socket.io-client'; +import { Server } from 'http'; + export let socketServer: Server import * as ioclient from 'socket.io-client' import { Utils as StringUtils } from '@shardus/types' From cb1f4a450e317896e8a4b55af7943905663360ca Mon Sep 17 00:00:00 2001 From: mhanson <3117293+mhanson-github@users.noreply.github.com> Date: Tue, 3 Sep 2024 19:48:03 -0400 Subject: [PATCH 3/5] Update package-lock.json --- package-lock.json | 252 +++++++--------------------------------------- 1 file changed, 34 insertions(+), 218 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8437a860..d065bf08 100644 --- a/package-lock.json +++ b/package-lock.json @@ -23,7 +23,7 @@ "node-cron": "3.0.2", "node-fetch": "^2.6.8", "rfdc": "^1.3.0", - "socket.io-client": "^2.3.0", + "socket.io-client": "^4.7.5", "sqlite3": "^5.0.0", "streamroller": "^3.1.3", "tydb": "^0.1.5" @@ -35,8 +35,6 @@ "@types/node": "18.16.1", "@types/node-cron": "3.0.7", "@types/node-fetch": "^2.5.4", - "@types/socket.io": "^2.1.11", - "@types/socket.io-client": "^1.4.33", "@typescript-eslint/eslint-plugin": "^5.60.0", "@typescript-eslint/typescript-estree": "^5.60.0", "eslint": "^8.43.0", @@ -640,8 +638,7 @@ "node_modules/@socket.io/component-emitter": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", - "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==", - "dev": true + "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==" }, "node_modules/@szmarczak/http-timer": { "version": "4.0.6", @@ -700,15 +697,6 @@ "@types/responselike": "^1.0.0" } }, - "node_modules/@types/engine.io": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/@types/engine.io/-/engine.io-3.1.10.tgz", - "integrity": "sha512-tmuKBF+q3h0nZ075osSKJ55nmvL5lWDjU8+QS/8XZT1YQ4xrxNSW3wXbjeMs8RugGxVpHAEnf9kXiRf7G94acw==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, "node_modules/@types/http-cache-semantics": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", @@ -782,33 +770,6 @@ "integrity": "sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==", "dev": true }, - "node_modules/@types/socket.io": { - "version": "2.1.13", - "resolved": "https://registry.npmjs.org/@types/socket.io/-/socket.io-2.1.13.tgz", - "integrity": "sha512-JRgH3nCgsWel4OPANkhH8TelpXvacAJ9VeryjuqCDiaVDMpLysd6sbt0dr6Z15pqH3p2YpOT3T1C5vQ+O/7uyg==", - "dev": true, - "dependencies": { - "@types/engine.io": "*", - "@types/node": "*", - "@types/socket.io-parser": "*" - } - }, - "node_modules/@types/socket.io-client": { - "version": "1.4.36", - "resolved": "https://registry.npmjs.org/@types/socket.io-client/-/socket.io-client-1.4.36.tgz", - "integrity": "sha512-ZJWjtFBeBy1kRSYpVbeGYTElf6BqPQUkXDlHHD4k/42byCN5Rh027f4yARHCink9sKAkbtGZXEAmR0ZCnc2/Ag==", - "dev": true - }, - "node_modules/@types/socket.io-parser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/socket.io-parser/-/socket.io-parser-3.0.0.tgz", - "integrity": "sha512-Ry/rbTE6HQNL9eu3LpL1Ocup5VexXu1bSSGlSho/IR5LuRc8YvxwSNJ3JxqTltVJEATLbZkMQETSbxfKNgp4Ew==", - "deprecated": "This is a stub types definition. socket.io-parser provides its own type definitions, so you do not need this installed.", - "dev": true, - "dependencies": { - "socket.io-parser": "*" - } - }, "node_modules/@typescript-eslint/eslint-plugin": { "version": "5.62.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", @@ -1170,11 +1131,6 @@ "node": ">=0.4.0" } }, - "node_modules/after": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/after/-/after-0.8.2.tgz", - "integrity": "sha512-QbJ0NTQ/I9DI3uSJA4cbexiwQeRAfjPScqIbSjUDd9TOrcg6pTkdgziesOqxBMBzit8vFCTwrP27t13vFOORRA==" - }, "node_modules/agent-base": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", @@ -1527,11 +1483,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/arraybuffer.slice": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/arraybuffer.slice/-/arraybuffer.slice-0.0.7.tgz", - "integrity": "sha512-wGUIVQXuehL5TCqQun8OW81jGzAWycqzFF8lFp+GOM5BXLYj3bKNsYC4daB7n6XjCqxQA/qgTJ+8ANR3acjrog==" - }, "node_modules/arrify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", @@ -1593,24 +1544,11 @@ "proxy-from-env": "^1.1.0" } }, - "node_modules/backo2": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", - "integrity": "sha512-zj6Z6M7Eq+PBZ7PQxl5NT665MvJdAkzp0f60nAJ+sLaSCBPMwVak5ZegFbgVCzFcCJTKFoMizvM5Ld7+JrRJHA==" - }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, - "node_modules/base64-arraybuffer": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.4.tgz", - "integrity": "sha512-a1eIFi4R9ySrbiMuyTGx5e92uRH5tQY6kArNcFaKBUleIoLjdjBg7Zxm3Mqm3Kmkf27HLR/1fnxX9q8GQ7Iavg==", - "engines": { - "node": ">= 0.6.0" - } - }, "node_modules/base64-js": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", @@ -1688,11 +1626,6 @@ "node": ">= 6" } }, - "node_modules/blob": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/blob/-/blob-0.0.5.tgz", - "integrity": "sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig==" - }, "node_modules/boxen": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/boxen/-/boxen-7.1.1.tgz", @@ -2374,24 +2307,6 @@ "commander": "^6.1.0" } }, - "node_modules/component-bind": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/component-bind/-/component-bind-1.0.0.tgz", - "integrity": "sha512-WZveuKPeKAG9qY+FkYDeADzdHyTYdIboXS59ixDeRJL5ZhxpqUnxSOwop4FQjMsiYm3/Or8cegVbpAHNA7pHxw==" - }, - "node_modules/component-emitter": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz", - "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==", - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/component-inherit": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/component-inherit/-/component-inherit-0.0.3.tgz", - "integrity": "sha512-w+LhYREhatpVqTESyGFg3NlP6Iu0kEKUHETY9GoZP/pQyW4mHFZuFWRUCIqVPZ36ueVLtoOEZaAqbCF2RDndaA==" - }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -3057,48 +2972,25 @@ } }, "node_modules/engine.io-client": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-3.5.4.tgz", - "integrity": "sha512-ydc8uuMMDxC5KCKNJN3zZKYJk2sgyTuTZQ7Aj1DJSsLKAcizA/PzWivw8fZMIjJVBo2CJOYzntv4FSjY/Lr//g==", - "dependencies": { - "component-emitter": "~1.3.0", - "component-inherit": "0.0.3", - "debug": "~3.1.0", - "engine.io-parser": "~2.2.0", - "has-cors": "1.1.0", - "indexof": "0.0.1", - "parseqs": "0.0.6", - "parseuri": "0.0.6", - "ws": "~7.5.10", - "xmlhttprequest-ssl": "~1.6.2", - "yeast": "0.1.2" - } - }, - "node_modules/engine.io-client/node_modules/debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.5.4.tgz", + "integrity": "sha512-GeZeeRjpD2qf49cZQ0Wvh/8NJNfeXkXXcoGh+F77oEAgo9gUHwT1fCRxSNU+YEEaysOJTnsFHmM5oAcPy4ntvQ==", "dependencies": { - "ms": "2.0.0" + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1", + "engine.io-parser": "~5.2.1", + "ws": "~8.17.1", + "xmlhttprequest-ssl": "~2.0.0" } }, - "node_modules/engine.io-client/node_modules/engine.io-parser": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-2.2.1.tgz", - "integrity": "sha512-x+dN/fBH8Ro8TFwJ+rkB2AmuVw9Yu2mockR/p3W8f8YtExwFgDvBDi0GWyb4ZLkpahtDGZgtr3zLovanJghPqg==", - "dependencies": { - "after": "0.8.2", - "arraybuffer.slice": "~0.0.7", - "base64-arraybuffer": "0.1.4", - "blob": "0.0.5", - "has-binary2": "~1.0.2" + "node_modules/engine.io-parser": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.3.tgz", + "integrity": "sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==", + "engines": { + "node": ">=10.0.0" } }, - "node_modules/engine.io-client/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, "node_modules/enquirer": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", @@ -4884,24 +4776,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-binary2": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-binary2/-/has-binary2-1.0.3.tgz", - "integrity": "sha512-G1LWKhDSvhGeAQ8mPVQlqNcOB2sJdwATtZKl2pDKKHfpf/rYj24lkinxf69blJbnsvtqqNU+L3SL50vzZhXOnw==", - "dependencies": { - "isarray": "2.0.1" - } - }, - "node_modules/has-binary2/node_modules/isarray": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", - "integrity": "sha512-c2cu3UxbI+b6kR3fy0nRnAhodsvR9dx7U5+znCOzdj6IfP3upFURTr0Xl5BlQZNKZjEtxrmVyfSdeE3O57smoQ==" - }, - "node_modules/has-cors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-cors/-/has-cors-1.1.0.tgz", - "integrity": "sha512-g5VNKdkFuUuVCP9gYfDJHjK2nqdQJ7aDLTnycnc2+RvsOQbuLdF5pm7vuE5J76SEBIQjs4kQY/BWq74JUmjbXA==" - }, "node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", @@ -5277,11 +5151,6 @@ "node": ">=4" } }, - "node_modules/indexof": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", - "integrity": "sha512-i0G7hLJ1z0DE8dsqJa2rycj9dBmNKgXBvotXtZYXakU9oivfB9Uj2ZBC27qqef2U58/ZLwalxa1X/RDCdkHtVg==" - }, "node_modules/infer-owner": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", @@ -8719,16 +8588,6 @@ "types-json": "^1.2.0" } }, - "node_modules/parseqs": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/parseqs/-/parseqs-0.0.6.tgz", - "integrity": "sha512-jeAGzMDbfSHHA091hr0r31eYfTig+29g3GKKE/PPbEQ65X0lmMwlEoqmhzu0iztID5uJpZsFlUPDP8ThPL7M8w==" - }, - "node_modules/parseuri": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/parseuri/-/parseuri-0.0.6.tgz", - "integrity": "sha512-AUjen8sAkGgao7UyCX6Ahv0gIK2fABKmYjvP4xmy5JaKvcbTRueIqIPHLAfq30xJddqSE033IOMUSOMCcK3Sow==" - }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -9923,56 +9782,23 @@ } }, "node_modules/socket.io-client": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-2.5.0.tgz", - "integrity": "sha512-lOO9clmdgssDykiOmVQQitwBAF3I6mYcQAo7hQ7AM6Ny5X7fp8hIJ3HcQs3Rjz4SoggoxA1OgrQyY8EgTbcPYw==", - "dependencies": { - "backo2": "1.0.2", - "component-bind": "1.0.0", - "component-emitter": "~1.3.0", - "debug": "~3.1.0", - "engine.io-client": "~3.5.0", - "has-binary2": "~1.0.2", - "indexof": "0.0.1", - "parseqs": "0.0.6", - "parseuri": "0.0.6", - "socket.io-parser": "~3.3.0", - "to-array": "0.1.4" - } - }, - "node_modules/socket.io-client/node_modules/debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/socket.io-client/node_modules/isarray": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.1.tgz", - "integrity": "sha512-c2cu3UxbI+b6kR3fy0nRnAhodsvR9dx7U5+znCOzdj6IfP3upFURTr0Xl5BlQZNKZjEtxrmVyfSdeE3O57smoQ==" - }, - "node_modules/socket.io-client/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/socket.io-client/node_modules/socket.io-parser": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-3.3.4.tgz", - "integrity": "sha512-z/pFQB3x+EZldRRzORYW1vwVO8m/3ILkswtnpoeU6Ve3cbMWkmHEWDAVJn4QJtchiiFTo5j7UG2QvwxvaA9vow==", + "version": "4.7.5", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.7.5.tgz", + "integrity": "sha512-sJ/tqHOCe7Z50JCBCXrsY3I2k03iOiUe+tj1OmKeD2lXPiGH/RUCdTZFoqVyN7l1MnpIzPrGtLcijffmeouNlQ==", "dependencies": { - "component-emitter": "~1.3.0", - "debug": "~3.1.0", - "isarray": "2.0.1" + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.2", + "engine.io-client": "~6.5.2", + "socket.io-parser": "~4.2.4" + }, + "engines": { + "node": ">=10.0.0" } }, "node_modules/socket.io-parser": { "version": "4.2.4", "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", - "dev": true, "dependencies": { "@socket.io/component-emitter": "~3.1.0", "debug": "~4.3.1" @@ -10481,11 +10307,6 @@ "node": ">=0.6.0" } }, - "node_modules/to-array": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/to-array/-/to-array-0.1.4.tgz", - "integrity": "sha512-LhVdShQD/4Mk4zXNroIQZJC+Ap3zgLcDuwEdcmLv9CCO73NWockQDwyUnW/m8VX/EElfL6FcYx7EeutN4HJA6A==" - }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -11375,15 +11196,15 @@ } }, "node_modules/ws": { - "version": "7.5.10", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", - "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", "engines": { - "node": ">=8.3.0" + "node": ">=10.0.0" }, "peerDependencies": { "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" + "utf-8-validate": ">=5.0.2" }, "peerDependenciesMeta": { "bufferutil": { @@ -11407,9 +11228,9 @@ } }, "node_modules/xmlhttprequest-ssl": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.6.3.tgz", - "integrity": "sha512-3XfeQE/wNkvrIktn2Kf0869fC0BN6UpydVasGIeSm2B1Llihf7/0UfZM+eCkOw3P7bP4+qPgqhm7ZoxuJtFU0Q==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz", + "integrity": "sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==", "engines": { "node": ">=0.4.0" } @@ -11463,11 +11284,6 @@ "node": ">=12" } }, - "node_modules/yeast": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/yeast/-/yeast-0.1.2.tgz", - "integrity": "sha512-8HFIh676uyGYP6wP13R/j6OJ/1HwJ46snpvzE7aHAN3Ryqh2yX6Xox2B4CUmTwwOIzlG3Bs7ocsP5dZH/R1Qbg==" - }, "node_modules/yn": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", From 39552125e10422afcfaada203613d23edddd29e7 Mon Sep 17 00:00:00 2001 From: CombatPug Date: Wed, 4 Sep 2024 18:03:08 +0200 Subject: [PATCH 4/5] fix startup issue --- src/Data/Data.ts | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/Data/Data.ts b/src/Data/Data.ts index a8c5cfe9..df1d12c3 100644 --- a/src/Data/Data.ts +++ b/src/Data/Data.ts @@ -191,7 +191,14 @@ export async function unsubscribeDataSender( export function initSocketClient(node: NodeList.ConsensusNodeInfo): void { if (config.VERBOSE) Logger.mainLogger.debug('Node Info to socket connect', node) - const socketClient = io(`http://${node.ip}:${node.port}`); + const socketClient = io(`http://${node.ip}:${node.port}`, { + transports: ['websocket','polling'], + reconnection: true, + reconnectionAttempts: Infinity, + reconnectionDelay: 1000, + reconnectionDelayMax: 5000, + randomizationFactor: 0.5, + }); socketClients.set(node.publicKey, socketClient) let archiverKeyisEmitted = false From 78518292409fe926e5612a8a975c4b0276b45cd7 Mon Sep 17 00:00:00 2001 From: CombatPug Date: Thu, 5 Sep 2024 17:21:02 +0200 Subject: [PATCH 5/5] fix startup issue --- package.json | 2 +- src/Data/Data.ts | 23 ++++++++++++++++++++++- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 8145e627..67f2dd12 100644 --- a/package.json +++ b/package.json @@ -88,7 +88,7 @@ "node-cron": "3.0.2", "node-fetch": "^2.6.8", "rfdc": "^1.3.0", - "socket.io-client": "^4.7.5", + "socket.io-client": "4.7.5", "sqlite3": "^5.0.0", "streamroller": "^3.1.3", "tydb": "^0.1.5" diff --git a/src/Data/Data.ts b/src/Data/Data.ts index df1d12c3..2a775f4b 100644 --- a/src/Data/Data.ts +++ b/src/Data/Data.ts @@ -169,6 +169,7 @@ export async function unsubscribeDataSender( } const socketClient = socketClients.get(publicKey) if (socketClient) { + console.log(' red - unsubscribe from node', publicKey) socketClient.emit('UNSUBSCRIBE', config.ARCHIVER_PUBLIC_KEY) socketClient.close() socketClients.delete(publicKey) @@ -192,7 +193,7 @@ export async function unsubscribeDataSender( export function initSocketClient(node: NodeList.ConsensusNodeInfo): void { if (config.VERBOSE) Logger.mainLogger.debug('Node Info to socket connect', node) const socketClient = io(`http://${node.ip}:${node.port}`, { - transports: ['websocket','polling'], + transports: ['websocket'], reconnection: true, reconnectionAttempts: Infinity, reconnectionDelay: 1000, @@ -202,8 +203,26 @@ export function initSocketClient(node: NodeList.ConsensusNodeInfo): void { socketClients.set(node.publicKey, socketClient) let archiverKeyisEmitted = false + socketClient.on('connect_error', (error) => { + console.error(' red - Connection error:', error); + if (socketClient.active) { + console.log(' red - temporary failure, the socket will automatically try to reconnect'); + } else { + console.log(' red - Connection denied by the server. Trying to reconnect'); + socketClient.connect() + } + }); + + socketClient.on('error', (error) => { + console.error(' red - Socket error:', error); + }); + + socketClient.on('connect_timeout', () => { + console.log(' red - Connection timed out'); + }); socketClient.on('connect', () => { + console.log(' red - connected to node', node.ip, node.port) Logger.mainLogger.debug( `${!archiverKeyisEmitted ? 'New connection' : 'Reconnection'} to consensus node ${node.ip}:${ node.port @@ -218,10 +237,12 @@ export function initSocketClient(node: NodeList.ConsensusNodeInfo): void { }) socketClient.once('disconnect', async () => { + console.log(' red - disconnected from node', node.ip, node.port) Logger.mainLogger.debug(`Connection request is refused by the consensor node ${node.ip}:${node.port}`) }) socketClient.on('DATA', (data: string) => { + console.log(' red - data received from node', node.ip, node.port) const newData: DataResponse & Crypto.TaggedMessage = StringUtils.safeJsonParse(data) if (!newData || !newData.responses) return