forked from noxious/server
bullmq
This commit is contained in:
@ -7,6 +7,7 @@ import { ZoneEventTile, ZoneEventTileTeleport } from '@prisma/client'
|
||||
import Rotation from '../../utilities/character/rotation'
|
||||
import CharacterManager from '../../managers/characterManager'
|
||||
import { gameLogger } from '../../utilities/logger'
|
||||
import QueueManager from '../../managers/queueManager'
|
||||
|
||||
export type ZoneEventTileWithTeleport = ZoneEventTile & {
|
||||
teleport: ZoneEventTileTeleport
|
||||
|
17
src/listeners/zone/characterListener.ts
Normal file
17
src/listeners/zone/characterListener.ts
Normal file
@ -0,0 +1,17 @@
|
||||
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', )
|
||||
})
|
||||
}
|
||||
}
|
27
src/managers/queueManager.ts
Normal file
27
src/managers/queueManager.ts
Normal file
@ -0,0 +1,27 @@
|
||||
import IORedis from 'ioredis';
|
||||
import { Job, Queue, Worker } from 'bullmq'
|
||||
import CharacterJoin from '../events/zone/characterJoin'
|
||||
|
||||
class QueueManager {
|
||||
private connection!: IORedis;
|
||||
public queue!: Queue;
|
||||
public worker!: Worker;
|
||||
|
||||
public boot() {
|
||||
this.connection = new IORedis('redis://@127.0.0.1:6379/4', {
|
||||
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 });
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
export default new QueueManager();
|
@ -15,6 +15,8 @@ import { Authentication } from './middleware/authentication'
|
||||
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
|
||||
@ -63,6 +65,8 @@ export class Server {
|
||||
// Load user manager
|
||||
await UserManager.boot()
|
||||
|
||||
QueueManager.boot();
|
||||
|
||||
// Load zoneEditor manager
|
||||
await ZoneManager.boot()
|
||||
|
||||
@ -84,6 +88,7 @@ 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}`)
|
||||
|
Reference in New Issue
Block a user