Add io socket message to share user position.

- Add message 'user-position' to share position in a room.
 - Change JoinRoomMessage to MessageUserPosition to have all data to share position and user information
 - Fix error alias to build
This commit is contained in:
gparant 2020-04-04 12:42:02 +02:00
parent 63dc515c5b
commit 4e1115725b
6 changed files with 54 additions and 30 deletions

1
back/.gitignore vendored
View File

@ -1,3 +1,4 @@
/dist/
/node_modules/
/dist/bundle.js
/yarn-error.log

View File

@ -1,7 +1,7 @@
import socketIO = require('socket.io');
import {Socket} from "socket.io";
import * as http from "http";
import {JoinRoomMessage} from "@Model/Websocket/JoinRoomMessage";
import {MessageUserPosition} from "@Model/Websocket/MessageUserPosition";
export class IoSocketController{
Io: socketIO.Server;
@ -21,8 +21,14 @@ export class IoSocketController{
positionXUser: user x position map
positionYUser: user y position on map
*/
socket.on('join-room', (message : JoinRoomMessage) => {
socket.on('join-room', (message : MessageUserPosition) => {
socket.join(message.roomId);
// sending to all clients in room except sender
socket.to(message.roomId).emit('join-room', message.toString());
});
socket.on('user-position', (message : MessageUserPosition) => {
// sending to all clients in room except sender
socket.to(message.roomId).emit('join-room', message.toString());
});
});

View File

@ -1,23 +0,0 @@
export class JoinRoomMessage {
userId: string;
roomId: string;
positionXUser: string;
positionYUser: string;
constructor(message: string) {
let data = JSON.parse(message);
this.userId = data.userId;
this.roomId = data.roomId;
this.positionXUser = data.positionXUser;
this.positionYUser = data.positionYUser;
}
toString(){
return JSON.stringify({
userId: this.userId,
roomId: this.roomId,
positionXUser: this.positionXUser,
positionYUser: this.positionYUser
})
}
}

View File

@ -0,0 +1,17 @@
export class Message {
userId: string;
roomId: string;
constructor(message: string) {
let data = JSON.parse(message);
this.userId = data.userId;
this.roomId = data.roomId;
}
toJson() {
return {
userId: this.userId,
roomId: this.roomId,
}
}
}

View File

@ -0,0 +1,24 @@
import {Message} from "./Message";
export class MessageUserPosition extends Message{
positionXUser: string;
positionYUser: string;
constructor(message: string) {
super(message);
let data = JSON.parse(message);
this.positionXUser = data.positionXUser;
this.positionYUser = data.positionYUser;
}
toString() {
return JSON.stringify(
Object.assign(
super.toJson(),
{
positionXUser: this.positionXUser,
positionYUser: this.positionYUser
})
);
}
}

View File

@ -40,12 +40,11 @@
// "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */
/* Module Resolution Options */
// "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */
// "baseUrl": "./", /* Base directory to resolve non-absolute module names. */
"baseUrl": "src",
"moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */
"baseUrl": ".", /* Base directory to resolve non-absolute module names. */
"paths": {
"@Controller": ["Controller/*"],
"@Model": ["Model/*"]
"@Controller/*": ["src/Controller/*"],
"@Model/*": ["src/Model/*"]
}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */
// "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */
// "typeRoots": [], /* List of folders to include type definitions from. */