forked from noxious/server
43 lines
1.3 KiB
TypeScript
43 lines
1.3 KiB
TypeScript
import 'reflect-metadata'
|
|
import Database from '@/application/database'
|
|
import Logger, { LoggerType } from '@/application/logger'
|
|
import ConsoleManager from '@/managers/consoleManager'
|
|
import DateManager from '@/managers/dateManager'
|
|
import HttpManager from '@/managers/httpManager'
|
|
import MapManager from '@/managers/mapManager'
|
|
import QueueManager from '@/managers/queueManager'
|
|
import SocketManager from '@/managers/socketManager'
|
|
import UserManager from '@/managers/userManager'
|
|
import WeatherManager from '@/managers/weatherManager'
|
|
|
|
export class Server {
|
|
private readonly logger = Logger.type(LoggerType.APP)
|
|
|
|
public async start(): Promise<void> {
|
|
try {
|
|
// Initialize database
|
|
await Database.initialize()
|
|
|
|
// Initialize managers
|
|
await Promise.all([
|
|
HttpManager.boot(HttpManager.getAppInstance()),
|
|
SocketManager.boot(HttpManager.getServerInstance()),
|
|
QueueManager.boot(),
|
|
UserManager.boot(),
|
|
MapManager.boot(),
|
|
DateManager.boot(),
|
|
WeatherManager.boot(),
|
|
ConsoleManager.boot()
|
|
])
|
|
} catch (error: any) {
|
|
console.error(error)
|
|
this.logger.error(`Server failed to start: ${error.message}`)
|
|
process.exit(1)
|
|
}
|
|
}
|
|
}
|
|
|
|
// Start the server
|
|
const server = new Server()
|
|
server.start().catch(console.error)
|