diff --git a/game-server/app.ts b/game-server/app.ts index 21ec24e54..66f7c98e5 100644 --- a/game-server/app.ts +++ b/game-server/app.ts @@ -30,7 +30,6 @@ import { resResult, genCode } from './app/pubUtils/util'; import { errlogger, infologger, loadLogger } from './app/util/logger'; import { connectThinkingData, getTire } from './app/services/sdkService'; import { loadGmDb } from './app/db'; -const fs = require('fs'); const filePath = (_pinus as any).FILEPATH; filePath.MASTER = '/config/master'; @@ -66,14 +65,12 @@ app.configure(function () { app.loadConfig('database', app.getBase() + '/config/database'); console.log('env:', app.get('env')); console.log('db:', app.get('database')); - - initMongodb(app); - initGmMongodb(app); - initRedis(app); + setupRoutes(app); setupFilters(app); connectThinkingData(app); - loadLogger(app.getServerId()) + loadLogger(app.getServerId()); + treatStartLogic(app); app.set(RESERVED.ERROR_HANDLER, errorHandler); app.set(RESERVED.GLOBAL_ERROR_HANDLER, globalErrorHandler); @@ -192,6 +189,26 @@ export function globalErrorHandler(err: Error, msg: any, resp: any, } } +async function treatStartLogic(app: _pinus.Application) { + await connectDb(app); + console.log('treatStartLogic', app.getServerType()); + if(app.getServerType() == 'systimer') { + // 维护信息 + await timeTaskService.initMaintenance(); + } else { + await timeTaskService.initMaintenanaceInOtherServers(); + } +} + +async function connectDb(app: _pinus.Application) { + // Promise并行处理 + return Promise.all([ + initMongodb(app), + initGmMongodb(app), + initRedis(app) + ]) +} + async function initMongodb(app: _pinus.Application) { await mongoose.connect(app.get('database').mongo, { useNewUrlParser: true, useUnifiedTopology: true, useCreateIndex: true, useFindAndModify: false }, (err) => { if (err) { diff --git a/game-server/app/servers/gm/handler/gmServerHandler.ts b/game-server/app/servers/gm/handler/gmServerHandler.ts index ad5de7e7e..f8b48c488 100644 --- a/game-server/app/servers/gm/handler/gmServerHandler.ts +++ b/game-server/app/servers/gm/handler/gmServerHandler.ts @@ -8,7 +8,6 @@ import { gameData } from '../../../pubUtils/data'; import { Maintenance, ServerlistModel, ServerlistUpdate } from '../../../db/Serverlist'; import { nowSeconds } from '../../../pubUtils/timeUtil'; import { createNewServer, sendOpenServerMail } from '../../../services/gmService'; -import { initAutoCreateServer, initMaintenance, stopMaintenance } from '../../../services/timeTaskService'; import { isNumber } from 'util'; import { MarqueeModel } from '../../../db/Marquee'; let timer: NodeJS.Timer; diff --git a/game-server/app/services/gmService.ts b/game-server/app/services/gmService.ts index 3e480f93c..5f6ca9049 100644 --- a/game-server/app/services/gmService.ts +++ b/game-server/app/services/gmService.ts @@ -169,6 +169,7 @@ export function setServerMainten(serverIds: number[], startTime: number, endTime pinus.app.set('maintenServers', maintenServers); } + export function stopServerMainten(serverIds: number[]) { let maintenServers = pinus.app.get('maintenServers')||new Map(); for(let id of serverIds) { diff --git a/game-server/app/services/timeTaskService.ts b/game-server/app/services/timeTaskService.ts index c590c8db1..426c64ff3 100644 --- a/game-server/app/services/timeTaskService.ts +++ b/game-server/app/services/timeTaskService.ts @@ -13,7 +13,7 @@ import { sendEndMsgToAllServer, autoDeclare, sendGuildActivityStatus, setPreDayA import { sendUngotDividendJob, startGuildAuction, startWorldAuction, stopAuction } from './auctionService'; import { DicGuildActivity } from '../pubUtils/dictionary/DicGuildActivity'; import { dispatch } from '../pubUtils/dispatcher'; -import { createNewServer, initMarquee } from './gmService'; +import { createNewServer, initMarquee, setServerMainten } from './gmService'; import moment = require('moment'); import { CounterModel } from '../db/Counter'; import { reportOneOnline } from './authenticateService'; @@ -91,9 +91,6 @@ export async function init() { // 跑马灯 await initMarquee(); - // 维护信息 - await initMaintenance(); - // 自动开服 await initAutoCreateServer(); @@ -516,7 +513,7 @@ async function pushMailSchedule(time: number) { // —————————————— 维护 —————————————— // let maintenInfos = new Map(); // batchCode => {servers, maintenance} -export async function initMaintenance(servers?: ServerlistType[]) { +export async function initMaintenance(servers?: ServerlistType[], fromApp = false) { if(!servers) servers = await ServerlistModel.findByEnv(pinus.app.get('env')); for(let server of servers) { @@ -529,12 +526,23 @@ export async function initMaintenance(servers?: ServerlistType[]) { } } for(let [batchCode] of maintenInfos) { - await setMaintenance(batchCode); + await setMaintenance(batchCode, fromApp); + } +} + +export async function initMaintenanaceInOtherServers() { + const servers = await ServerlistModel.findByEnv(pinus.app.get('env')); + + for(let server of servers) { + let { id, maintenance } = server; + if(maintenance && maintenance.isOpen) { + setServerMainten([id], maintenance.startTime, maintenance.endTime) + } } } // 设置维护 -async function setMaintenance(batchCode: string) { +async function setMaintenance(batchCode: string, fromApp: boolean) { let { maintenance } = maintenInfos.get(batchCode); console.log('***** maintenance', maintenance); @@ -557,8 +565,7 @@ async function setMaintenance(batchCode: string) { console.log('******* setMaintenance', now, now < maintenance.endTime, now > maintenance.startTime) if(now < maintenance.endTime) { if(now > maintenance.startTime) { - console.log('*******') - await startMaintenanceSchedule(batchCode); + if(!fromApp) await startMaintenanceSchedule(batchCode); } else { scheduleJob(`startMainten${batchCode}`, maintenance.startTime * 1000, async () => { await startMaintenanceSchedule(batchCode); diff --git a/game-server/config/servers.ts b/game-server/config/servers.ts index 806c55876..66fc1f2d8 100644 --- a/game-server/config/servers.ts +++ b/game-server/config/servers.ts @@ -272,7 +272,7 @@ module.exports = { }, 'distribute': { 'connector': [ - { 'id': 'connector-server-4', 'host': '172.26.145.171', 'port': 9061, 'clientHost': '121.89.211.172', 'clientPort': 3050, 'frontend': true, "args": " --inspect=9237" }, + { 'id': 'connector-server-4', 'host': '172.26.145.171', 'port': 9061, 'clientHost': '121.89.211.172', 'clientPort': 3051, 'frontend': true, "args": " --inspect=9237" }, ], 'battle': [ { 'id': 'battle-server-2', 'host': '172.26.145.171', 'port': 9062 },