From 0c9cbca7658ef05f9cfaaa3b1faf2932728b0616 Mon Sep 17 00:00:00 2001 From: Gregoire Parant Date: Sat, 23 May 2020 15:04:25 +0200 Subject: [PATCH] Use `userId` generated by back end in all message --- back/src/Controller/IoSocketController.ts | 22 +++++++++---------- back/src/Model/Websocket/ExSocketInterface.ts | 2 +- back/src/Model/Websocket/Identificable.ts | 2 +- back/src/Model/World.ts | 12 +++++----- 4 files changed, 19 insertions(+), 19 deletions(-) diff --git a/back/src/Controller/IoSocketController.ts b/back/src/Controller/IoSocketController.ts index a93f7738..f6f9f41f 100644 --- a/back/src/Controller/IoSocketController.ts +++ b/back/src/Controller/IoSocketController.ts @@ -51,7 +51,7 @@ export class IoSocketController { return next(new Error('Authentication error')); } (socket as ExSocketInterface).token = tokenDecoded; - (socket as ExSocketInterface).id = tokenDecoded.userId; + (socket as ExSocketInterface).userId = tokenDecoded.userId; next(); }); }); @@ -97,7 +97,8 @@ export class IoSocketController { ioConnection() { this.Io.on(SockerIoEvent.CONNECTION, (socket: Socket) => { - this.sockets.set(socket.id, socket as ExSocketInterface); + let client : ExSocketInterface = socket as ExSocketInterface; + this.sockets.set(client.userId, client); /*join-rom event permit to join one room. message : userId : user identification @@ -135,7 +136,7 @@ export class IoSocketController { //add function to refresh position user in real time. //this.refreshUserPosition(Client); - let messageUserJoined = new MessageUserJoined(Client.id, Client.name, Client.character, Client.position); + let messageUserJoined = new MessageUserJoined(Client.userId, Client.name, Client.character, Client.position); socket.to(roomId).emit(SockerIoEvent.JOIN_ROOM, messageUserJoined); @@ -172,7 +173,7 @@ export class IoSocketController { } world.updatePosition(Client, position); - socket.to(Client.roomId).emit(SockerIoEvent.USER_MOVED, new MessageUserMoved(Client.id, Client.position)); + socket.to(Client.roomId).emit(SockerIoEvent.USER_MOVED, new MessageUserMoved(Client.userId, Client.position)); } catch (e) { console.error('An error occurred on "user_position" event'); console.error(e); @@ -200,9 +201,8 @@ export class IoSocketController { }); socket.on(SockerIoEvent.DISCONNECT, () => { + let Client = (socket as ExSocketInterface); try { - let Client = (socket as ExSocketInterface); - //leave room this.leaveRoom(Client); @@ -218,7 +218,7 @@ export class IoSocketController { console.error('An error occurred on "disconnect"'); console.error(e); } - this.sockets.delete(socket.id); + this.sockets.delete(Client.userId); }); // Let's send the user id to the user @@ -226,7 +226,7 @@ export class IoSocketController { let Client = (socket as ExSocketInterface); Client.name = playerDetails.name; Client.character = playerDetails.character; - answerFn(socket.id); + answerFn(Client.userId); }); }); } @@ -242,7 +242,7 @@ export class IoSocketController { leaveRoom(Client : ExSocketInterface){ // leave previous room and world if(Client.roomId){ - Client.to(Client.roomId).emit(SockerIoEvent.USER_LEFT, Client.id); + Client.to(Client.roomId).emit(SockerIoEvent.USER_LEFT, Client.userId); //user leave previous world let world : World|undefined = this.Worlds.get(Client.roomId); @@ -310,11 +310,11 @@ export class IoSocketController { clients.forEach((client: ExSocketInterface, index: number) => { let clientsId = clients.reduce((tabs: Array, clientId: ExSocketInterface, indexClientId: number) => { - if (!clientId.id || clientId.id === client.id) { + if (!clientId.userId || clientId.userId === client.userId) { return tabs; } tabs.push({ - userId: clientId.id, + userId: clientId.userId, name: clientId.name, initiator: index <= indexClientId }); diff --git a/back/src/Model/Websocket/ExSocketInterface.ts b/back/src/Model/Websocket/ExSocketInterface.ts index c55a9759..df72321f 100644 --- a/back/src/Model/Websocket/ExSocketInterface.ts +++ b/back/src/Model/Websocket/ExSocketInterface.ts @@ -6,7 +6,7 @@ export interface ExSocketInterface extends Socket, Identificable { token: any; roomId: string; webRtcRoomId: string; - //userId: string; + userId: string; name: string; character: string; position: PointInterface; diff --git a/back/src/Model/Websocket/Identificable.ts b/back/src/Model/Websocket/Identificable.ts index 8c344259..4e3228ae 100644 --- a/back/src/Model/Websocket/Identificable.ts +++ b/back/src/Model/Websocket/Identificable.ts @@ -1,3 +1,3 @@ export interface Identificable { - id: string; + userId: string; } diff --git a/back/src/Model/World.ts b/back/src/Model/World.ts index 0529edc3..5f70a32f 100644 --- a/back/src/Model/World.ts +++ b/back/src/Model/World.ts @@ -53,8 +53,8 @@ export class World { } public join(socket : Identificable, userPosition: PointInterface): void { - this.users.set(socket.id, { - id: socket.id, + this.users.set(socket.userId, { + id: socket.userId, position: userPosition }); // Let's call update position to trigger the join / leave room @@ -62,18 +62,18 @@ export class World { } public leave(user : Identificable){ - let userObj = this.users.get(user.id); + let userObj = this.users.get(user.userId); if (userObj === undefined) { - console.warn('User ', user.id, 'does not belong to world! It should!'); + console.warn('User ', user.userId, 'does not belong to world! It should!'); } if (userObj !== undefined && typeof userObj.group !== 'undefined') { this.leaveGroup(userObj); } - this.users.delete(user.id); + this.users.delete(user.userId); } public updatePosition(socket : Identificable, userPosition: PointInterface): void { - let user = this.users.get(socket.id); + let user = this.users.get(socket.userId); if(typeof user === 'undefined') { return; }