From 2490b084797a1bd93a18e4d7c10271c800c9e9f2 Mon Sep 17 00:00:00 2001 From: Dennis Postma Date: Fri, 12 Jul 2024 12:44:48 +0200 Subject: [PATCH] World load improvement --- .../events/character/CharacterZoneRequest.ts | 19 ++++++++----------- src/app/utilities/Types.ts | 4 ++-- 2 files changed, 10 insertions(+), 13 deletions(-) diff --git a/src/app/events/character/CharacterZoneRequest.ts b/src/app/events/character/CharacterZoneRequest.ts index 76f1383..d899bbc 100644 --- a/src/app/events/character/CharacterZoneRequest.ts +++ b/src/app/events/character/CharacterZoneRequest.ts @@ -8,13 +8,18 @@ interface IPayload { zoneId: number; } +interface IResponse { + zone: Zone; + characters: Character[]; +} + /** * Handle character zone request event * @param socket * @param io */ export default function (socket: TSocket, io: Server) { - socket.on('character:zone:request', async (data: IPayload) => { + socket.on('character:zone:request', async (data: IPayload, callback: (response: IResponse) => void) => { console.log(`---User ${socket.character?.id} has requested zone.`); if (!data.zoneId) { @@ -32,10 +37,7 @@ export default function (socket: TSocket, io: Server) { socket.join(zone.id.toString()); // send over zone and characters to socket - socket.emit('character:zone:load', { - zone: zone, - characters: ZoneManager.getCharactersInZone(zone.id), - }); + callback({zone, characters: ZoneManager.getCharactersInZone(zone.id)}); // let other clients know of new character io.to(zone.id.toString()).emit('zone:character:join', socket.character); @@ -43,9 +45,4 @@ export default function (socket: TSocket, io: Server) { // add character to zone manager ZoneManager.addCharacterToZone(zone.id, socket.character as Character); }); -} - -/** - * Resources: - * https://stackoverflow.com/questions/6873607/socket-io-rooms-difference-between-broadcast-to-and-sockets-in - */ \ No newline at end of file +} \ No newline at end of file diff --git a/src/app/utilities/Types.ts b/src/app/utilities/Types.ts index af024cf..33b8a6c 100644 --- a/src/app/utilities/Types.ts +++ b/src/app/utilities/Types.ts @@ -1,5 +1,5 @@ import { Socket } from 'socket.io'; -import {Character, Character as ICharacter, User} from "@prisma/client"; +import {Character, User} from "@prisma/client"; export type TSocket = Socket & { user?: User @@ -18,7 +18,7 @@ export type TSocket = Socket & { export type TCharacter = Socket & { user?: User, - character?: ICharacter + character?: Character } export type TZoneCharacter = Character & {