From 36a2e1e071faebcbc53abc34bbeb76fc1ee5c552 Mon Sep 17 00:00:00 2001 From: Sithranduil Date: Wed, 25 Nov 2020 21:49:25 +0100 Subject: [PATCH] =?UTF-8?q?Optimisation=20des=20requetes=20vers=20gametrac?= =?UTF-8?q?ker=20(un=20fichier=20de=20config=20est=20d=C3=A9sormais=20n?= =?UTF-8?q?=C3=A9cessaire)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config.js | 55 ++++++++++++++++++++++++++++++++++++++++++ modules/gametracker.js | 2 +- modules/index.js | 28 +++++++++++++++++++-- 3 files changed, 82 insertions(+), 3 deletions(-) create mode 100644 config.js diff --git a/config.js b/config.js new file mode 100644 index 0000000..9229345 --- /dev/null +++ b/config.js @@ -0,0 +1,55 @@ +export default { + gametrackerShedule: 3600, // Request gametracker every hours + servers: [ + // cstrike:only_de_dust2 + { + ip: '87.98.155.38', + port: 27016, + }, + // cstrike:zm_full_ammo + { + ip: '87.98.152.38', + port: 27015, + }, + // cstrike:free_for_all + { + ip: '87.98.181.40', + port: 27015, + }, + // cstrike:gungame + { + ip: '87.98.155.38', + port: 27017, + }, + // cstrike:surf + { + ip: '188.165.178.187', + port: 27015, + }, + // cstrike:ze + { + ip: '188.165.178.180', + port: 27016, + }, + // csgo:bhop_t1_to_t2 + { + ip: '188.165.178.160', + port: 27015, + }, + // csgo:bhop_t3_to_t5 + { + ip: '188.165.178.162', + port: 27015, + }, + // csgo:only_de_dust2 + { + ip: '188.165.178.187', + port: 27035, + }, + // csgo:zm_source + { + ip: '188.165.178.187', + port: 27030, + }, + ], +}; diff --git a/modules/gametracker.js b/modules/gametracker.js index c6fec25..161d385 100644 --- a/modules/gametracker.js +++ b/modules/gametracker.js @@ -14,7 +14,7 @@ export default { }; }, setMetrics(response) { - const rank = response.rank || 0; + const rank = response ? response.rank : 0; metrics.gametrackerRank.set((Number(rank))); }, }; diff --git a/modules/index.js b/modules/index.js index 9608f4f..2e26a55 100644 --- a/modules/index.js +++ b/modules/index.js @@ -4,6 +4,31 @@ import sourcepython from './sourcepython.js'; import registry from './registry.js'; import game from './game.js'; import gametracker from './gametracker.js'; +import conf from '../config.js'; + +const gameTrackerResponse = []; + +function requestGameTrackerSchedule() { + setTimeout(() => { + conf.servers.forEach((server) => { + requestGameTracker(server.ip, server.port); + }); + requestGameTrackerSchedule(); + }, conf.gametrackerShedule * 1000); +} + +async function requestGameTracker(ip, port) { + try { + gameTrackerResponse[`${ip}:${port}`] = await gametracker.request(ip, port); + } catch (e) { + console.log(e); + } +} + +requestGameTrackerSchedule(); +conf.servers.forEach((server) => { + requestGameTracker(server.ip, server.port); +}); export default { async request(config, client) { @@ -14,7 +39,6 @@ export default { const infoResponse = await game.requeseInfo(client, config.game); const statsResponse = await game.requestStats(client, config.game); const statusResponse = await game.requestStatus(client, config.game); - const gameTrackerResponse = await gametracker.request(config.ip, config.port); if (config.metamod) { metamodResponse = await metamod.request(client); } @@ -31,7 +55,7 @@ export default { metamod: metamodResponse, sourcemod: sourcemodResponse, sourcepython: sourcepythonResponse, - gametracker: gameTrackerResponse, + gametracker: gameTrackerResponse[`${config.ip}:${config.port}`], }; },