return next(new Error('Authentication error'));
}
(socket as ExSocketInterface).token = tokenDecoded;
- (socket as ExSocketInterface).id = tokenDecoded.userId;
+ (socket as ExSocketInterface).userId = tokenDecoded.userId;
next();
});
});
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
//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);
}
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);
});
socket.on(SockerIoEvent.DISCONNECT, () => {
+ let Client = (socket as ExSocketInterface);
try {
- let Client = (socket as ExSocketInterface);
-
//leave room
this.leaveRoom(Client);
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
let Client = (socket as ExSocketInterface);
Client.name = playerDetails.name;
Client.character = playerDetails.character;
- answerFn(socket.id);
+ answerFn(Client.userId);
});
});
}
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);
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
});
}
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
}
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;
}