Use `userId` generated by back end in all message
authorGregoire Parant <g.parant@thecodingmachine.com>
Sat, 23 May 2020 13:04:25 +0000 (15:04 +0200)
committerGregoire Parant <g.parant@thecodingmachine.com>
Sat, 23 May 2020 13:04:25 +0000 (15:04 +0200)
back/src/Controller/IoSocketController.ts
back/src/Model/Websocket/ExSocketInterface.ts
back/src/Model/Websocket/Identificable.ts
back/src/Model/World.ts

index a93f7738f7276f1375bde5eaade27e9f1ae7d855..f6f9f41fb410b69dbd47c694ec75bd9b72a9fb64 100644 (file)
@@ -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<any>, 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
                 });
index c55a97595adc062a774673ef6cb317737fa6f4ec..df72321f68dbf86058166d3bb8039902fc5fcaf4 100644 (file)
@@ -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;
index 8c34425992aff682187e256f573925fea26e0d95..4e3228aef0c822b650d83ca131a71580ced9ef69 100644 (file)
@@ -1,3 +1,3 @@
 export interface Identificable {
-    id: string;
+    userId: string;
 }
index 0529edc38717eb3c858c374c35439c4205bea0c9..5f70a32f9afe8e8d65425fb71168eeac9eb5ea35 100644 (file)
@@ -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;
         }