diff --git a/.env.example b/.env.example index 2e5480b..6e7d4f1 100644 --- a/.env.example +++ b/.env.example @@ -2,6 +2,7 @@ ENV=development PORT=4000 DATABASE_URL="mysql://root@localhost:3306/nq" +REDIS_URL="redis://@127.0.0.1:6379/4" JWT_SECRET="secret" # Game configuration diff --git a/package-lock.json b/package-lock.json index 3e3ee54..e6e9ed0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,5 +1,5 @@ { - "name": "new-quest-server", + "name": "nq-server", "lockfileVersion": 3, "requires": true, "packages": { diff --git a/src/events/character/connect.ts b/src/events/character/connect.ts index 5aa1b83..b280cdb 100644 --- a/src/events/character/connect.ts +++ b/src/events/character/connect.ts @@ -11,11 +11,11 @@ export default function (socket: TSocket, io: Server) { socket.on('character:connect', async (data: SocketResponseT) => { console.log('character:connect requested', data) try { - const foundCharacter = await CharacterRepository.getByUserAndId(socket?.user?.id as number, data.character_id); - if(!foundCharacter) return; - socket.characterId = foundCharacter.id; - CharacterManager.initCharacter(foundCharacter as ExtendedCharacter); - socket.emit('character:connect', foundCharacter) + const character = await CharacterRepository.getByUserAndId(socket?.user?.id as number, data.character_id); + if(!character) return; + socket.characterId = character.id; + CharacterManager.initCharacter(character as ExtendedCharacter); + socket.emit('character:connect', character) } catch (error: any) { console.log('character:connect error', error) } diff --git a/src/listeners/zone/characterListener.ts b/src/listeners/zone/characterListener.ts deleted file mode 100644 index 46d260e..0000000 --- a/src/listeners/zone/characterListener.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { Server } from 'socket.io' -import { TSocket } from '../../utilities/types' -import QueueManager from '../../managers/queueManager' -import CharacterMove from '../../events/zone/characterMove' - -export default class CharacterListener { - constructor(private readonly io: Server, private readonly socket: TSocket) { - - } - - public listen(): void { - this.socket.on('character:initMove', () => { - console.log('initmove?') - QueueManager.queue.add('myqueue', ) - }) - } -} \ No newline at end of file diff --git a/src/managers/queueManager.ts b/src/managers/queueManager.ts index 34ce388..e8c73d0 100644 --- a/src/managers/queueManager.ts +++ b/src/managers/queueManager.ts @@ -1,6 +1,7 @@ import IORedis from 'ioredis'; import { Job, Queue, Worker } from 'bullmq' import CharacterJoin from '../events/zone/characterJoin' +import config from '../utilities/config' class QueueManager { private connection!: IORedis; @@ -8,19 +9,21 @@ class QueueManager { public worker!: Worker; public boot() { - this.connection = new IORedis('redis://@127.0.0.1:6379/4', { + this.connection = new IORedis(config.REDIS_URL, { maxRetriesPerRequest: null }); - this.queue = new Queue('myqueue', { connection: this.connection }); - this.worker = new Worker('myqueue', async (job: Job)=>{ - console.log('hallo') - console.log(job.data); - console.log(job.data.data.classobj); - const test = job.data.data.classobj(); - console.log(test); - console.log(job.data); - }, { connection: this.connection, concurrency: 10000 }); + // this.queue = new Queue('myqueue', { connection: this.connection }); + // this.worker = new Worker('myqueue', async (job: Job)=>{ + // console.log('hallo') + // console.log(job.data); + // console.log(job.data.data.classobj); + // const test = job.data.data.classobj(); + // console.log(test); + // console.log(job.data); + // }, { connection: this.connection, concurrency: 10000 }); + // + console.log('hallo') } } diff --git a/src/server.ts b/src/server.ts index f564229..7644c4e 100644 --- a/src/server.ts +++ b/src/server.ts @@ -16,7 +16,6 @@ import { Dirent } from 'node:fs' import { appLogger, watchLogs } from './utilities/logger' import CharacterManager from './managers/characterManager' import QueueManager from './managers/queueManager' -import CharacterListener from './listeners/zone/characterListener' export class Server { private readonly app: Application @@ -88,7 +87,6 @@ export class Server { private async handleConnection(socket: TSocket) { const eventsPath = path.join(__dirname, 'events') try { - new CharacterListener(this.io, socket).listen(); await this.loadEventHandlers(eventsPath, socket) } catch (error: any) { appLogger.error(`Failed to load event handlers: ${error.message}`) diff --git a/src/utilities/config.ts b/src/utilities/config.ts index fe1713d..efea8ed 100644 --- a/src/utilities/config.ts +++ b/src/utilities/config.ts @@ -4,6 +4,7 @@ dotenv.config() class config { static ENV: string = process.env.ENV || 'prod' + static REDIS_URL: string = process.env.REDIS_URL || 'redis://@127.0.0.1:6379/4' static HOST: string = process.env.HOST || '0.0.0.0' static PORT: number = process.env.PORT ? parseInt(process.env.PORT) : 6969 static JWT_SECRET: string = process.env.JWT_SECRET || 'secret'